php - 关系表查询在表中的字段 'id' 中给我一个空值

标签 php mysql mysqli relational-database

我正在创建一个查询,我使用 LEFT JOIN 来连接两个表。但是我在从表中获取 fb_id 值时遇到了问题,它给了我一个空的结果。这是我的代码:

$sql = "SELECT * FROM tblfeedback a LEFT JOIN tblreply b ON a.fb_id = b.fb_id WHERE a.fb_status = 1 ORDER BY a.fb_id DESC";
$res = $con->query($sql);
....
....

上面的查询会给我这样的结果:

enter image description here

我认为这就是我没有得到 fb_id 值的原因,因为最后一列为空。如何从第一列中获取 fb_id 的值?谢谢。我真的有麻烦了。我希望有人能开导我。

最佳答案

您应该为父表中的列起一个别名,因为两个表中的列名相同。 fetch_assoc()填写$row['fb_id']时,获取结果行的最后一个,可以为NULL,因为它来自第二个表。

SELECT a.fb_id AS a_id, a.*, b.*
FROM tblfeedback a 
LEFT JOIN tblreply b ON a.fb_id = b.fb_id 
WHERE a.fb_status = 1 
ORDER BY a_id DESC

然后您可以访问 $row['a_id'] 来获取此列。

更一般地说,我建议不要使用 SELECT *。只需选择您实际需要的列。所以你可以选择a.fb_id而不选择b.fb_id,它会一直被填上。

关于php - 关系表查询在表中的字段 'id' 中给我一个空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42688572/

相关文章:

php - 从单个帖子获取 Wordpress 类别

mysql - 测验数据库设计

mysql - 如何在mysql中从新值中减去列的旧值

php - mysqli_real_escape_string 在 array_map 内不起作用

php - Mysql INSERT INTO 和 UPDATE 无法正常工作

java - 类图中的public、protection、private的作用是什么?有什么例子吗?

php - 选择实体假设相关实体不存在

php - 如何在 Zend 中重定向到不同的 Controller 操作

mysql - INSERT IGNORE 插入 0 行

php - MYSQLI_TYPE_INTERVAL 有什么用?