目前我正在使用codeigniter一个PHP项目,我正在使用的一个库返回数据库结果的对象,看起来像这样,
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的对象无法转换为字符串
文件名:库/Parser.php
行号:63
如何解决这个问题?理想情况下,不改变数据库结果的返回方式。
不能直接回显对象。创建方法__toString()或在回显之前序列化对象
你做对了。有几件事。
这一行你少了一个结束符
$data['users'] = $this->users_model->get_by($this->session->userdata('user_id'));
而且,很难知道用户模型返回的是什么。你能提供$this->users_model->get_by()的代码吗?这就是你的问题所在。
确保您的db查询返回您期望的对象。您可能需要添加->row()。
可能是因为你向视图发送了一个名为"users"的变量。但是在视图中,变量是$user而不是$users
如果不是……关于views的文档说:
注意:如果你使用一个对象,类变量将被转换成数组
元素。
祝你好运!
对于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);