You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP与CodeIgniter环境下如何正确从STDClass对象取值?

正确从CodeIgniter查询结果中获取单个值的方法

嘿,我明白你遇到的问题了——你之所以用echo $query->login_id;会报错,是因为**$query是CodeIgniter的查询结果对象,它本身并不包含login_id这个属性**,你的查询数据其实存在result()返回的对象数组里。

咱们一步步来修正:

情况1:只需要获取单行数据

你的print_r结果显示只有一行数据,这种情况下有两种简单的方式:

方式一:从result()数组中取第一个元素

result()返回的是包含所有行的对象数组,你可以直接取数组的第一个元素来访问属性:

$query = $this->db->query('select login_id, date_created from prjsite_login');
$rows = $query->result();
// 取第一行对象
$row = $rows[0];
echo $row->login_id; // 输出admin
echo $row->date_created; // 输出2018-04-04 13:18:42

方式二:用row()方法更高效

CodeIgniter专门提供了row()方法,它会直接返回查询结果的第一行单个对象,不用再手动取数组元素:

$query = $this->db->query('select login_id, date_created from prjsite_login');
$row = $query->row();
echo $row->login_id; // 正常输出admin

如果你习惯用数组而不是对象,也可以用row_array()方法,返回关联数组:

$row = $query->row_array();
echo $row['login_id']; // 同样输出admin

情况2:需要处理多行数据

如果你的查询结果有多行,就需要用循环遍历result()返回的数组:

$query = $this->db->query('select login_id, date_created from prjsite_login');
foreach ($query->result() as $item) {
    echo $item->login_id . ' - ' . $item->date_created . '<br>';
}

总结一下核心点:

  • $query是查询操作的结果对象,不是数据行,不能直接访问字段属性
  • result()返回对象数组,row()返回单个对象,row_array()返回关联数组,根据需求选择即可

内容的提问来源于stack exchange,提问作者cracker_chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:39:43