PHP连接表mysql

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

所以我有两张桌子:

表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($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。您需要添加日期函数以获得所需的格式。链接:。如果答案有帮助,请支持。