我想得到一个user\\u nicenames和ID的列表。但不是我现在得到的所有用户名。我知道我应该在$名称前后使用%但似乎没有任何效果。这是迄今为止我找到的获得一些产出的唯一方法;
global $wpdb; //get access to the WordPress database object variable
//get names of all users
$name = $wpdb->esc_like(stripslashes($_POST[\'name\'])).\'%\'; //escape for use in LIKE statement
$sql = "SELECT user_nicename, ID
FROM $wpdb->users
WHERE user_nicename LIKE %s
";
$sql = $wpdb->prepare($sql, $name);
$results = $wpdb->get_results($sql);
如何将输出限制为仅以开头的user\\u nicenames,所以
$_POST[\'name\'] .\'%\'
在普通php代码中。
SO网友:signal2013
能否验证$\\u POST[\'name\']是否正在获取值。我建议将其回显到页面上进行调试(如果站点处于活动状态,可能在注释标记中)。如果$\\u POST[\'name\']为空,则将返回所有结果,因为查询将显示user_nicename LIKE \'%\'
作为预防措施,在任何情况下,都应该进行条件检查,以查看$\\u POST[\'name\']是否已设置且不为空(如果不希望返回所有结果)。如果为空或null,则相应地添加可选代码,如显示未找到结果的消息等。。基于您希望应用程序的工作方式。
我建议你把对账单分开来核对一下。。所以基本上:
$name = \'\';
if(isset($_POST[\'name\'])){
$name = stripslashes($_POST[\'name\']);
}
echo \'<!-- name: \'.$name.\' -->\';
if($name==null || $name==\'\'){
//TODO: like return;
}else {
$name = $wpdb->esc_like($name).\'%\';
....
}