2011-05-04 70 views
1

我跟笨奥纳PHP项目做什么工作的,和一个我使用的回报数据库结果的对象,看起来像这样的库,PHP返回对象呼应出值

stdClass Object 
(
    [user_id] => 2 
    [firstname] => John 
    [surname] => Doe 
    [email] => [email protected] 
    [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

消息:Object类的stdClass的 可能未转换为字符串

文件名:libraries/Parser.php

行号:63

我怎样才能解决这个问题?不需要改变数据库结果的理想返回方式。

+0

“$ data ['users']”and“echo $ user-> firstname;”不匹配。只是拼写错误还是它的问题? – rzetterberg 2011-05-04 12:10:26

+0

您正在分配给'用户',但正在访问'用户'。这是一个错字吗? – JohnP 2011-05-04 12:11:11

+0

对不起,这是类型 – 2011-05-04 12:16:04

回答

0

也许是因为你发送一个名为“用户”,以您的观点可变..但在你看来,你所说的变量$用户,而不是用户$

如果不是...的doc on views说:

注意:如果使用对象,类 变量将变成数组 元素。

祝你好运!

+0

亚博士说,但这是什么意思?如何访问这些变量? – Don 2014-01-05 16:51:09

1

您无法直接回显对象。在回声前创建一个方法__toString()或serialize。您需要调用$ users-> result(),$ users-> result_array(),$ users-> row()或$ users-> row_array()来访问数据库结果对象数据

1

你在正确的轨道上。一些东西。

你错过了一个结束)在这一行。

$data['users'] = $this->users_model->get_by($this->session->userdata('user_id')); 

此外,很难知道用户模型返回的是什么。你能提供$ this-> users_model-> get_by()的代码吗?这就是你的问题所在。

确保你有你的数据库查询返回对象,如你所期望的。您可能需要添加 - > row()。