CodeIgniter中数据库查询循环仅返回单条结果的问题求助
解决CodeIgniter中数据库查询循环仅返回一条结果的问题
嘿,我来帮你搞定这个循环只返回一条结果的问题~先看看代码里的几个关键点:
1. 最可能的原因:未初始化目标数组
你直接在foreach里用$userdatas[]来追加数据,但如果这个变量在循环前没有被声明成空数组,很容易出问题——比如如果之前代码里这个变量有残留值,或者PHP默认把它当成单个变量而非数组,就会导致最后只保留一条数据,甚至报错。
修复方式:
在循环前先把$userdatas初始化为空数组就行:
// 先初始化空数组,避免变量残留或类型错误 $userdatas = []; $userchatData = $this->db->get($this->db->dbprefix('usres_chat'))->result_array(); foreach($userchatData as $key => $userdata) { $userdatas[]= array( 'chat_id' => $userdata['chat_id'], 'chat_from' => $userdata['chat_from'], 'created_date' => $userdata['created_date'] ); } $data['ChatdatabyId'] = $userdatas; $data['responseCode'] = '200'; $data['responseMessage'] = 'User listing successfully'; echo json_encode($data);
2. 先确认数据库查询本身的结果
另外,你可以先打印一下查询到的原始数据,看看是不是数据库本身就只返回了一条记录:
$userchatData = $this->db->get($this->db->dbprefix('usres_chat'))->result_array(); // 打印原始结果,看看数据库实际返回了多少条 var_dump($userchatData); exit;
如果var_dump显示数据库确实只有一条数据,那问题就出在数据本身,不是循环的问题啦。
3. 可选:简化你的代码(更高效)
其实CodeIgniter可以直接帮你筛选字段,不用手动循环赋值,这样既简洁又不容易出错:
// 直接查询需要的三个字段,拿到结果直接用 $userchatData = $this->db->select('chat_id, chat_from, created_date') ->get($this->db->dbprefix('usres_chat')) ->result_array(); $data['ChatdatabyId'] = $userchatData; $data['responseCode'] = '200'; $data['responseMessage'] = 'User listing successfully'; echo json_encode($data);
这样写不仅少了循环步骤,还能减少出错的概率哦~
内容的提问来源于stack exchange,提问作者new developer
相关产品推荐
相关产品推荐

