【发布时间】:2021-05-04 12:31:24
【问题描述】:
我在我的 WordPress 页面上的 PHP sn-p 中编写了一些代码,而 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 这是该查询的正确结果
我做错了什么?你能帮我吗?
【问题讨论】:
-
当您运行查询
$queryColumn08时,这是否定义在其他地方,因为前一行是针对$queryColumn07。 -
对不起,我纠正了我的拼写错误。
-
旁注:这不是使用
$wpdb->prepare()的正确方法。为了让它做应该做的事情,你应该像这样使用它:$wpdb->prepare( " SELECT DISTINCT p.id FROM plz p LEFT JOIN vermieter v ON v.id_plz=p.id WHERE p.postleitzahl=%s ", $column07a );。您现在拥有它的方式使您容易受到 SQL 注入攻击。有关详细信息,请参阅wpdb::prepare()。 -
我知道,我只是这样写的,所以你们不必解密声明。让大家更容易阅读