prepared语句返回一个空数组

时间:2015-05-27 22:43:22

标签: 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时(请参阅下面的代码),它会返回数据库中的所有结果。

// 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

1 个答案:

答案 0 :(得分:1)

WordPress在使用sprintf()语法时,实际上就像预处理语句一样。因此,您只能传递要查询的列的值,而不是整个列和值。

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