我正在创建一个查询,并使用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
上面的查询会给我一个这样的结果:
我认为这就是为什么我没有得到fb_id
值是因为最后一列为空。如何从第一列获取$("#notif").click(function() {
Cookies.set('RemoveCount', 'true');
$("#count").hide();
});
的值?谢谢。我真的遇到了麻烦。我希望有人能够启发我的思想。
答案 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行是tblfeedback
中fb_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>";
}