关系表查询在表中的字段“id”中给出了一个空值

时间:2017-03-09 06:49:49

标签: php mysql mysqli relational-database

我正在创建一个查询,并使用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); .... .... 值时遇到了麻烦,它给了我一个空的结果。这是我的代码:

fb_id

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

enter image description here

我认为这就是为什么我没有得到fb_id值是因为最后一列为空。如何从第一列获取$("#notif").click(function() { Cookies.set('RemoveCount', 'true'); $("#count").hide(); }); 的值?谢谢。我真的遇到了麻烦。我希望有人能够启发我的思想。

2 个答案:

答案 0 :(得分:1)

您应该为父表中的列指定别名,因为两个表中的列名相同。当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,并且它将始终填写。

答案 1 :(得分:0)

由于您使用的是左连接,因此结果集图片中的2行是tblfeedbackfb_id未找到tblreply的行。我们知道这是真的,因为结果集中的所有tblreply列都为空。

话虽如此,它并不是真正清楚你要求的是什么。如果您询问如何通过php从查询中访问tblfeedback.fd_id列,则可以使用fetch_array方法并使用0索引。

$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);

while($row = $res->fetch_array()) {
  echo "fb_id: " . $row[0] . "<br>";
}