当返回的行为0时,为什么Wordpress $ wpdb-> query()响应1

时间:2010-06-07 13:20:47

标签: php wordpress

我在自定义函数中执行以下操作:

    $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。有人知道这里发生了什么吗?

感谢,

2 个答案:

答案 0 :(得分:7)

来自documentation

  

该函数返回一个整数   对应于行数   影响/选择。如果有MySQL   错误,该函数将返回FALSE。   (注意:因为0和FALSE都可以   退回,确保你使用   正确的比较运算符:相等   == vs. sameity ===)。

查询返回1行,因此query()函数返回1 - 并且对于您在问题中发布的查询将始终返回1,即使选择的行数也是如此COUNT为0.使用TheDeadMedic建议的get_varget_rowget_results来获取查询的实际结果,可能是012

答案 1 :(得分:6)

改为使用$wpdb->get_var($query)

因此,使用$wpdb->get_row()将单个行检索为单个对象(或数组),并使用$wpdb->get_results()获取结果集。