2014-06-11 56 views
1

我正在使用Wordpress插件通过名字,姓氏,电子邮件等方式搜索所有用户。只要我只使用其中一个值,例如名字。 我需要将所有值添加到选择!Wordpress SQL LIKE语句具有多个值

我已经尝试使用','和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']."%"); 

回答

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[] = '[email protected]'; 
$var[] = 'date LIKE "%%%s%%"'; 
$var_data[] = 'Howdy'; 
var_dump($wpdb->prepare('SELECT * FROM users WHERE '.implode(' OR ',$var),$var_data)); 
+0

但我需要:SELECT * FROM用户WHERE first_name,last_name,street,email LIKE%s“等。 – user3729015

0

您是否正确对待对象?这将遍历检索的值