PHP连接表mysql
所以我有两张桌子: 表1销售 身份证件 识别 日期 地位 表2用户 身份证件 识别 全名 电子邮件 这是我查询值的方式:PHP连接表mysql,php,mysql,Php,Mysql,所以我有两张桌子: 表1销售 身份证件 识别 日期 地位 表2用户 身份证件 识别 全名 电子邮件 这是我查询值的方式: <?php $query = "SELECT * FROM sales WHERE status='OK' ORDER BY STR_TO_DATE(`date`, '%Y/%m/%d %H:%i:%s') DESC LIMIT 5"; if ($result = $link->query($qu
<?php
$query = "SELECT * FROM sales WHERE status='OK' ORDER BY STR_TO_DATE(`date`, '%Y/%m/%d %H:%i:%s') DESC LIMIT 5";
if ($result = $link->query($query)) {
$num_rows = 0;
while ($row = $result->fetch_assoc()) {
$num_rows++;
echo '<div class="my-box">';
echo "{$row['id']}";
echo "{$row['date']}";
echo "{$row['dbirth']}";
echo "{$row['email']}";
echo "{$row['ident']}";
echo '</div>';
}
$result->free();
}
?>
现在,它回显该行的标识,但不是显示标识,而是显示具有表2中标识的全名。我尝试了类似SELECT*FROM sales LEFT JOIN users on sales.id=users.id的方法,但没有给出完整名称。有什么提示吗?您的SQL似乎有误
当您连接表时,请这样做
从表1上的表1内部联接表2中选择列名称。列名称=表2。列名称
如果您正确地联接表,您将能够检索“Fullname”列。我相信Identit字段将是users表中的主键和sales表中的外键。如果是,这将返回所需结果以及两个表中列出的其他字段
SELECT sales.ID AS sales_ID,sales.Ident AS Identity,Date,Status,Fullname,Email FROM sales
INNER JOIN users ON sales.Ident = users.Ident
WHERE status='OK'
ORDER BY STR_TO_DATE(`date`, '%Y/%m/%d %H:%i:%s')
DESC LIMIT 5
如果date字段更新为date或datetime,只需使用
ORDER BY DATE
要获得更好的数据库实践:
您需要将日期字段数据类型更改为日期或日期时间
您需要了解RDBMS中的主键和外键概念。
您需要学习SQL中的连接
使用日期数据类型存储日期,或者不必麻烦使用RDBMS。有关进一步的帮助,请参阅@草莓,这不是我的问题。你有这个问题的解决方案吗?“但这并没有给我全名”-那么它给了你什么?您是否先在前端(如phpMyAdmin)尝试过该查询?@CBroe它根本没有给我任何值。我应该在我已有的查询中创建一个新查询,还是替换它?重写您的查询,因为您的代码选择*FROM sales WHERE status='OK'ORDER BY STR_TO_DATE。。。不会加入您的表。日期当前为varchar。我应该改为date255或datetime255,还是在使用日期时不需要255?什么是最好的,日期还是日期时间?如果你想记录日期,请使用日期。如果两者都有,使用datetime。是的,我想同时记录日期和时间,那么我只做datetime而不做datetime?还有最后一个问题;格式是否仍然相同:2020/08/03 15:27:34?默认SQL格式为2020-08-05 13:25:17。您需要添加日期函数以获得所需的格式。链接:。如果答案有帮助,请支持。