类似wpdb的请求显示所有数据库数据

时间:2017-12-08 作者:Theetje

我想得到一个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代码中。

2 个回复
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).\'%\';

  ....
}

SO网友:Sneha Agarwal

您的查询是正确的,like参数将是

global $wpdb; //get access to the WordPress database object variable

//get names of all users
$name = $wpdb->esc_like(stripslashes($_POST[\'name\']))."%";
$sql = "SELECT user_nicename, ID
FROM $wpdb->users
WHERE user_nicename LIKE %s
";

$sql = $wpdb->prepare($sql, $name);

$results = $wpdb->get_results($sql);

结束

相关推荐

定制表和使用wpdb从html表单插入到数据库中

我使用自定义表让用户注册他们所做的事情的页面。我在理解wpdb以及如何使用它从html表单插入数据以及如何连接这些文件和函数方面遇到了问题。发布我的数据时,我发现错误wpdb->prepare缺少2个is行参数:$redskabsID = $wpdb->get_row( $wpdb->prepare(\"SELECT redskabs_id FROM wp_redskaber WHERE redskabs_id = %d\") ); 和一个错误mysql_real_escape