即使返回的连接结果为空,mysqli_num_rows也会返回1

标签 mysql

这是我的查询:

$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/

相关文章:

java - 如何为 Hibernate 设置 HSQLDB?

mysql - 如何计算 MySQL/正则表达式替换器中的单词?

mysql - 查询执行时间过长

PHP 仅计算上个月日期范围的行,而不是从过去 30 天到当前日期

mysql - 获取每组分组结果的前n条记录

c# - UWP 连接字符串

php - Laravel 4 阿拉伯字符

即使存在引用,MySQL 外键错误

PHP + MySQL 从链接查询结果中级联搜索

数据库;从三个表中选择时限制一个表中的记录