wpdb 查询返回错误结果

时间:2021-05-04 12:31:24

标签: php sql wordpress

我在 WordPress 页面上的 PHP 代码段中编写了一些代码,wpdb 查询总是给我错误的结果。

在 WordPress 中

$column07a = $_POST[$attributes[8]];         **<-** echo displayed **24253**

$queryColumn07 = $wpdb->prepare( " SELECT DISTINCT p.id 
                        FROM plz p 
                            LEFT JOIN vermieter v ON v.id_plz=p.id 
                        WHERE p.postleitzahl='$column07a' " );`     

$column07 = $wpdb->query( $queryColumn07 ); **<-** echo displayed **1** 

在 SQL 中

SELECT DISTINCT p.id 
FROM plz p 
    LEFT JOIN vermieter v ON v.id_plz=p.id 
WHERE p.postleitzahl='24253';   

phpmyadmin 显示 3 这是该查询的正确结果

我做错了什么?你能帮我一些忙吗?

1 个答案:

答案 0 :(得分:0)

您得到 1 的原因是因为您使用的是 query() 方法而不是 get_results()get_var()

来自 $wpdb::query() 文档:

<块引用>

返回:

(int|bool) CREATE、ALTER、TRUNCATE 和 DROP 查询的布尔值 true。 所有其他查询受影响/选择的行数。错误时返回布尔值 false。

(强调我的。)

所以,当你运行这个:

$column07 = $wpdb->query( $queryColumn07 );

您得到 1,因为 query() 正在返回您的 SELECT 查询找到的行数。

在您的特定情况下,正如前面所指出的,您希望使用 get_var() 来获取查询返回的实际 ID:

$column07 = $wpdb->get_var( $queryColumn07 );

echo $column07; // Should output 3 according to your comments.