WordPress中获取SELECT查询关联行数组时丢失首行如何解决?
问题原因与修复方案
原因分析
你这段代码里手动维护$count索引的写法本身逻辑没问题,但如果$count变量在这段代码执行前被其他逻辑修改过(比如之前的代码已经给$count赋过非0的值),就会导致第一行数据无法存入数组的索引0位置,最终出现丢失第一行的情况。另外,这种手动计数的方式属于冗余写法,容易因为疏忽(比如漏写$count++)引发数据丢失问题。
修复方案
直接利用PHP数组的自动追加特性,去掉$count变量,每次循环时用$user_object[]来添加元素,数组会自动按顺序从0开始生成索引,确保所有行数据都被正确存入:
$sql = $wpdb->prepare( "SELECT * FROM users" ); $user_object = array(); foreach( $wpdb->get_results( $sql ) as $row ) { $user_object[] = array( "user_ID" => $row->user_ID, "user_name" => $row->user_name, ); } return wp_send_json( $user_object );
额外优化
如果不需要对字段做额外处理,还可以直接让wpdb返回关联数组,省去循环赋值的步骤,代码更简洁高效(建议只查询需要的字段,避免冗余数据):
$sql = $wpdb->prepare( "SELECT user_ID, user_name FROM users" ); $user_object = $wpdb->get_results( $sql, ARRAY_A ); return wp_send_json( $user_object );
内容的提问来源于stack exchange,提问作者maja
相关产品推荐
相关产品推荐

