我正在使用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']."%");
答案 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']);
<强>更新强>
用于破坏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 />';
}