PHP返回一个返回值的对象


PHP returning object echoing out the values

目前我正在使用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);