Php prepared语句返回一个空数组

Php prepared语句返回一个空数组,php,sql,wordpress,Php,Sql,Wordpress,我不能在准备好的语句中使用%s echo $get_where; // returns: edited = 1 $get_uncontacted_members = $wpdb->get_results( $wpdb->prepare("SELECT * FROM yc_customers WHERE %s", $get_where) ); 此代码返回一个空数组。但是当我使用$get_where而不是%s(请参见下面的代码)时,它会返回数据库中的所有结果 // Th

我不能在准备好的语句中使用
%s

echo $get_where; // returns: edited = 1
$get_uncontacted_members = $wpdb->get_results(
        $wpdb->prepare("SELECT * FROM yc_customers WHERE %s", $get_where)
);
此代码返回一个空数组。但是当我使用
$get_where
而不是
%s
(请参见下面的代码)时,它会返回数据库中的所有结果

// This works
echo $get_where; // returns: edited = 1
$get_uncontacted_members = $wpdb->get_results(
        $wpdb->prepare("SELECT * FROM yc_customers WHERE edited = 1", $get_where)
);

为什么它不能与
%s
一起工作?

WordPress虽然使用sprintf()语法,但实际上它的工作方式与准备好的语句类似。因此,只能传递要查询的列的值,而不能传递整个列和值

$get_uncontacted_members = $wpdb->get_results(
        $wpdb->prepare("SELECT * FROM yc_customers WHERE IFNULL(edited,'') = %s", 1)
);

因为
%s
是用于和公司的,所以请使用
(至少我认为这是正确的)和
$wpdb->prepare(“选择*来自yc_客户,其中编辑=1”,$get_WHERE)
不会使用
$get\u where
做任何事情,因为没有任何东西可以绑定它:它只是ignored@castis
还返回一个空数组。@MarkBaker我知道。我只是想说,当我使用
edited=1
而不是
%s
时,我会得到结果。我没有故意删除
$get_where
,因为它会导致错误。噢,哇,这意味着我现在有问题了。但是谢谢,很高兴知道!变量
$get_的值为NULL或edited='',其中
可以编辑=1或编辑为NULL。。。你知道我怎样才能达到我的目标吗?我更新了我的代码,所以现在你的%s基本上都是空的,“”现在也一样了。因此,您可以将变量作为1或“伟大的答案”传入!非常感谢你!!