我不能在我准备好的陈述中使用%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
?
答案 0 :(得分:1)
WordPress在使用sprintf()语法时,实际上就像预处理语句一样。因此,您只能传递要查询的列的值,而不是整个列和值。
$get_uncontacted_members = $wpdb->get_results(
$wpdb->prepare("SELECT * FROM yc_customers WHERE IFNULL(edited,'') = %s", 1)
);