从 STDClass 获取价值

Get value from STDClass

我正在使用 PHP 和 CodeIgniter。 我 运行 使用以下脚本进行查询:

$query = $this->db->query('select login_id, date_created from prjsite_login');
$row = $query->result();
print_r($row);

print_r 的结果是:

Array ( [0] => stdClass Object ( [login_id] => admin [date_created] => 2018-04-04 13:18:42 ) )

这是正确的。当我尝试使用以下脚本从 stdClass 获取 1 个对象或值时,你:

echo $query->login_id;

我收到以下错误:

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: pages/home.php

Line Number: 21

Backtrace:

File: C:\xampp\htdocs\BMI_PRJSITE\application\views\pages\home.php Line: 21 Function: _error_handler

File: C:\xampp\htdocs\BMI_PRJSITE\application\controllers\Pages.php Line: 11 Function: view

File: C:\xampp\htdocs\BMI_PRJSITE\index.php Line: 315 Function: require_once

我做错了什么?

TIA

由于您的结果在数组中并且数组包含对象,因此您必须首先访问该数组然后访问对象

echo $row[0]->login_id;

或使用foeach获取所有值

foreach($row as $value)
{
    echo $value->login_id;
}

您不能直接从 $query 获取值,因为此时您只是生成一个查询,只有在执行它之后您才能从 $query 获取结果,您在

$row=$query->result();

查看您的结果,您得到的结果是 stdClass 对象的数组,因此需要 json-encode 您的对象,然后将其解码回数组

$array = json_decode(json_encode($row), True);

如果你确定你只会得到一行,那么就不需要循环,你可以简单地通过

echo $array[0]->login_id;

否则,你必须去循环

 foreach ($array as  $value) {
        echo $value->login_id;
    }