我在自定义函数中执行以下操作:
$exists = $wpdb->query($wpdb->prepare('
SELECT COUNT(*)
FROM wp_%d_gdsr_data_article
WHERE post_id = %d
', $blog_id, $post_id));
即使查询没有返回任何行,$ exists也会计算为1。此外,var_dump($ wpdb-> queries)产生NULL。有人知道这里发生了什么吗?
感谢,
答案 0 :(得分:7)
该函数返回一个整数 对应于行数 影响/选择。如果有MySQL 错误,该函数将返回FALSE。 (注意:因为0和FALSE都可以 退回,确保你使用 正确的比较运算符:相等 == vs. sameity ===)。
查询返回1行,因此query()
函数返回1
- 并且对于您在问题中发布的查询将始终返回1
,即使选择的行数也是如此COUNT
为0.使用TheDeadMedic建议的get_var
,get_row
或get_results
来获取查询的实际结果,可能是0
, 1
,2
等
答案 1 :(得分:6)
改为使用$wpdb->get_var($query)
。
因此,使用$wpdb->get_row()
将单个行检索为单个对象(或数组),并使用$wpdb->get_results()
获取结果集。