如何从SELECT查询中获取所有数据作为Wordpress中的关联行数组?



我把它从数据库,并通过ajax (wordpress)发送。一切正常,除了我没有得到第一行从数据库中。正如我在网上看到的,也许在数组中也有类似的问题。有人可以解释并帮助我修复它,使所有行显示?

代码:

$sql = $wpdb->prepare( "SELECT * FROM users" );
$count = 0;
$user_object = array();
foreach( $wpdb->get_results( $sql ) as $key => $row ) {
$user_id = $row->user_ID;
$user_name = $row->user_name;
$user_object[$count]= array(
"user_ID"=>$user_id,
"user_name"=>$user_name,
);
$count++;
}

return wp_send_json( $user_object );

您根本不需要循环您的结果,您的代码可以进一步简化。

  • 没有占位符来绑定变量,所以不需要使用prepare()
  • 不需要在第一级循环和手动设置索引或在第二级设置关联键,因为get_results()ARRAY_A已经为您完成了这些操作。代码:

return wp_send_json($wpdb->get_results('SELECT * FROM users', ARRAY_A));

见:https://developer.wordpress.org/reference/classes/wpdb/get_results/


当您想要在SQL中添加PHP变量时,那么使用预处理语句是合适的。例如:带有IN()条件的WordPress预处理语句

WordPress数据库表总是使用前缀,所以你必须使用$wpdb->prefix.'users'包含前缀,或者如果你试图获得WordPress核心用户,那么你可以使用$wpdb->users获得表名与前缀。

参考:https://developer.wordpress.org/reference/classes/wpdb/。

您可以使用ARRAY_A作为get_results()的第二个输出参数,这样您就不必遍历结果。

参考:https://developer.wordpress.org/reference/classes/wpdb/get_results/。

代码:

global $wpdb;
$sql = $wpdb->prepare( "SELECT * FROM {$wpdb->users}" );
return wp_send_json($wpdb->get_results($sql, ARRAY_A));

或者有另一种方法可以使用get_users()在WordPress中获得用户。

参考:https://developer.wordpress.org/reference/functions/get_users/

相关内容

  • 没有找到相关文章

最新更新