这是我的查询:
$query = 'SELECT b.author as author, b.review as review FROM location_final_similar a LEFT JOIN location_reviews b ON (a.uuid = b.uuid AND a.originalLocationID = b.originalLocationID) WHERE a.finalLocationID = "'.$locationID.'"';
正如您在上面所看到的,我唯一关心的是获取作者和评论(从表 location_reviews 中检索)。
当我使用 location_reviews 中包含数据的 $locationID 进行测试时,mysqli_num_rows 将返回正确的计数。
但是当我使用 location_reviews 中没有数据的 $locationID 进行测试时,mysqli_num_rows 仍将返回 1,但作者和评论为空。那么我怎样才能避免这种情况呢?如果给定 ID 没有评论,我需要 mysqli_num_rows 返回 0。
最佳答案
您必须使用INNER JOIN
(或者RIGHT JOIN
),例如
SELECT b.author as author, b.review as review FROM location_final_similar a INNER JOIN location_reviews b ON (a.uuid = b.uuid AND a.originalLocationID = b.originalLocationID) WHERE a.finalLocationID = 1
参见Difference between INNER and OUTER joins以获得一个很好的解释。
关于即使返回的连接结果为空,mysqli_num_rows也会返回1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36206647/