如何在Wordpress中将SELECT查询中的所有数据提取为关联行数组?

np8igboo  于 2022-11-22  发布在  WordPress
关注(0)|答案(2)|浏览(111)

我把它从数据库中取出来,然后通过 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 );
lpwwtiir

lpwwtiir1#

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

  • 没有占位符可绑定变量,因此无需使用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/
当你想把PHP变量添加到你的SQL中时,使用预准备语句是合适的。例如:WordPress prepared statement with IN() condition

44u64gxh

44u64gxh2#

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));

或者有另一种方法来让用户在WordPress中使用get_users()
参考:https://developer.wordpress.org/reference/functions/get_users/

相关问题