我不能在我的预备语句中使用%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)
);