我目前在PHP项目上使用codeigniter,而我正在使用的库之一返回数据库结果的对象,看起来像这样,
stdClass Object
(
[user_id] => 2
[firstname] => John
[surname] => Doe
[email] => jonh.doe@emailaddress.info
[password] => 9d210a03bed920971fefab01b8f84a27
[postcode] => W1 5ST
[date_registered] => 2021-04-11 10:56:47
[last_logged_in] => 2011-05-04 11:56:03
[user_type_id] => 2
)
然后我尝试使用以下代码回显值,我通过执行以下操作将用户发送到我的视图,
$data['users'] = $this->users_model->get_by($this->session->userdata('user_id');
$this->load->view('view', $data);
然后在我看来,我正在做以下事情,
echo $users->firstname;
但是我在页面顶部出现以下错误
遇到PHP错误
严重程度:4096
消息:类stdClass的对象 无法转换为字符串
文件名:libraries / Parser.php
行号:63
我该如何解决这个问题?不改变理想情况下返回数据库结果的方式。
答案 0 :(得分:1)
您无法直接回显对象。在回显之前创建方法__toString()或serialize。
答案 1 :(得分:1)
你走在正确的轨道上。一些事情。
你错过了这一行的结束。
$data['users'] = $this->users_model->get_by($this->session->userdata('user_id'));
此外,很难知道用户模型返回的内容。你能提供$ this-> users_model-> get_by()的代码吗?这就是你的问题所在。
确保您的数据库查询按预期返回对象。您可能需要添加 - > row()。
答案 2 :(得分:0)
也许是因为您在视图中发送了一个名为“users”的变量..但在您的视图中,您调用变量$ user而不是$ users
如果不是...... doc on views说:
注意:如果使用对象,则为该类 变量将变为数组 元件。
祝你好运!
答案 3 :(得分:0)
对于Codeigniter,您需要调用$ users-> result(),$ users-> result_array(),$ users-> row()或$ users-> row_array()来访问DB结果对象数据
http://codeigniter.com/user_guide/database/results.html
假设返回一行:
$data['users'] = $this->users_model->get_by($this->session->userdata('user_id');
$data['users'] = $data['users']->row();
$this->load->view('view', $data);