我正在使用PHP和CodeIgniter。 我使用以下脚本运行查询:
$query = $this->db->query('select login_id, date_created from prjsite_login');
$row = $query->result();
print_r($row);
print_r的结果是:
数组([0] => stdClass对象([login_id] => admin [date_created] => 2018-04-04 13:18:42))
哪个是对的。当我尝试使用以下脚本从stdClass获取1个对象或值时:
echo $query->login_id;
我收到以下错误:
遇到PHP错误
严重性:注意
消息:尝试获取非对象的属性
文件名:pages / home.php
行号:21
回溯:
文件:C:\ xampp \ htdocs \ BMI_PRJSITE \ application \ views \ pages \ home.php 行:21功能:_error_handler
文件:C:\ xampp \ htdocs \ BMI_PRJSITE \ application \ controllers \ Pages.php 行:11功能:视图
文件:C:\ xampp \ htdocs \ BMI_PRJSITE \ index.php行:315功能: require_once
我做错了什么?
TIA
答案 0 :(得分:1)
由于您的结果是在数组和数组包含对象,您必须首先访问该数组然后对象
echo $row[0]->login_id;
或使用foeach
获取所有值
foreach($row as $value)
{
echo $value->login_id;
}
答案 1 :(得分:1)
您无法直接从$ query获取值,因为此时您只是生成一个查询,并且只有在执行了您正在执行的查询后才能从$ query获得结果
$row=$query->result();
查看结果,您将获得一个stdClass对象数组的结果,因此需要对对象进行json编码,然后将其解码回数组
$array = json_decode(json_encode($row), True);
如果您确定只会获得一行,则不需要循环,您只需按
进行操作即可echo $array[0]->login_id;
否则,你必须进行循环
foreach ($array as $value) {
echo $value->login_id;
}