我在 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 这是该查询的正确结果
我做错了什么?你能帮我一些忙吗?
答案 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.