具有多个值的Wordpress SQL LIKE语句

时间:2014-06-11 07:56:11

标签: php sql wordpress

我正在使用Wordpress插件通过名字,姓氏,电子邮件等搜索所有用户。只要我只使用其中一个值(如名字),它就可以正常工作。 我需要将所有值添加到select!

我已经尝试使用','和OR语句添加更多内容,但它无效。

$results = $wpdb->prepare("SELECT * FROM users WHERE first_name LIKE %s", "%".$_POST['search']."%");
编辑:发现它

发现它!

$results = $wpdb->prepare("SELECT * FROM users WHERE lower(first_name) LIKE lower (%s) OR lower(last_name) LIKE lower(%s) LIKE lower(%s)OR lower(postcode) LIKE lower(%s)", "%".$_POST['search']."%", "%".$_POST['search']."%");

2 个答案:

答案 0 :(得分:1)

要获得通过$wpdb->prepare的文字%,只需加倍。您不需要避免$wpdb->prepare

概念证明:

var_dump($wpdb->prepare('SELECT * FROM {$wpdb->posts} WHERE post_title LIKE "%%%s%%"','Hello'));

所以你的查询应该是:

$results = $wpdb->prepare("SELECT * FROM users WHERE first_name LIKE %%%s%%",$_POST['search']);

(more...)

<强>更新

用于破坏OR:

$var[] = 'name LIKE "%%%s%%"';
$var_data[] = 'Hello';
$var[] = 'email LIKE "%%%s%%"';
$var_data[] = 'tt@tt.tt';
$var[] = 'date LIKE "%%%s%%"';
$var_data[] = 'Howdy';
var_dump($wpdb->prepare('SELECT * FROM users WHERE '.implode(' OR ',$var),$var_data));

答案 1 :(得分:0)

您是否正确对待物体?这将迭代检索的值

while($row = $results->fetch_assoc()){
    echo $row['username'] . '<br />';
}