Codeigniter出现Attempt to Read Property on String错误如何解决
报错原因
- 模型中调用
row()方法,查询匹配数据后返回的是单个对象实例,不是可遍历的二维结果集。视图里对单个对象执行foreach遍历时,会默认遍历对象的属性值,遍历出来的单元是字符串/数字等基础类型值,此时尝试对基础类型值访问->jenis_produk属性就会触发对应报错。 - 若查询无匹配数据,
row()会返回null,未做判空直接访问属性也会抛出类似错误。
解决方案
场景1:该查询逻辑仅需返回单条数据
无需使用foreach遍历,直接访问对象属性即可,视图层代码参考:
// 先判空避免无数据时报错 if ($minimalis) { echo $minimalis->jenis_produk; // 其余属性同理直接访问 }
场景2:该查询逻辑需要返回多条数据遍历
修改模型代码,将row()替换为result(),返回可遍历的对象集合:
public function getMinimalis($id) { return $this->db->get_where($this->_table, ["jenis_produk" => $id])->result(); }
修改后视图层的foreach遍历逻辑即可正常运行:
foreach ($minimalis as $item) { echo $item->jenis_produk; // 其余属性同理访问 }
内容的提问来源于stack exchange,提问作者William Sanders
相关产品推荐
相关产品推荐

