类 stdClass 的对象无法转换为字符串
Posted
技术标签:
【中文标题】类 stdClass 的对象无法转换为字符串【英文标题】:Object of class stdClass could not be converted to string 【发布时间】:2011-04-06 04:08:33 【问题描述】:我现在遇到了 php 的问题,我收到了这个错误,
Object of class stdClass could not be converted to string
在我的站点中运行这部分代码时出现错误,
function myaccount()
$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
//var_dump($data['user_data']);
$this->load->model('users_model');
$data['user_info'] = $this->users_model->get_user_and_roadmaps_by_id($this->uri->segment(3));
$this->template->build('users/my_account', $data);
发生错误的行就是这一行,
$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
而这一行正在调用这个函数,
function get_userdata()
$CI =& get_instance();
if(!$this->logged_in())
return false;
else
$query = $CI->db->get_where('users', array('user_id' => $CI->session->userdata('user_id')));
return $query->row();
我现在真的不知道这个问题是什么,所以任何帮助都会很棒。
【问题讨论】:
【参考方案1】:正如其他人所说,echo 命令无法自行打印出对象。 因此,您可以考虑使用 print_r 来显示对象的内容。
所以,在你的情况下:
print_r($query);
【讨论】:
【参考方案2】:我一直在寻找的是一种获取数据的方法
所以我用了这个$data = $this->db->get('table_name')->result_array();
然后就像你操作数组对象一样获取我的数据。
$data[0]['field_name']
无需担心类型转换或任何直截了当的事情。
所以它对我有用。
【讨论】:
【参考方案3】:一般要去掉
stdClass 类的对象无法转换为字符串。
尝试使用echo '<pre>'; print_r($sql_query);
进行我的 SQL 查询得到的结果为
stdClass Object
(
[num_rows] => 1
[row] => Array
(
[option_id] => 2
[type] => select
[sort_order] => 0
)
[rows] => Array
(
[0] => Array
(
[option_id] => 2
[type] => select
[sort_order] => 0
)
)
)
为了访问有不同的方法,例如:num_rows, row, rows
echo $query2->row['option_id'];
将给出结果为 2
【讨论】:
【参考方案4】:试试这个
return $query->result_array();
【讨论】:
【参考方案5】:我使用 codeignator,但出现错误:
stdClass 类的对象无法转换为字符串。
对于这篇文章,我得到了我的结果
我在我的模型部分使用
$query = $this->db->get('user', 10);
return $query->result();
从这篇文章中我使用
$query = $this->db->get('user', 10);
return $query->row();
我解决了我的问题
【讨论】:
【参考方案6】:您在另一条评论中提到您不希望您的 get_userdata() 函数返回一个 stdClass 对象?如果是这种情况,您应该注意该函数中的这一行:
return $query->row();
这里,CodeIgniter 数据库对象“$query”调用了它的 row() 方法,该方法返回一个 stdClass。或者,您可以运行 row_array() 以数组形式返回相同的数据。
无论如何,我强烈怀疑这不是问题的根本原因。也许你能给我们更多的细节吗?玩一些东西,让我们知道它是怎么回事。我们无法使用您的代码,因此很难确切说明发生了什么。
【讨论】:
奇怪的是 return $query->row() 来自一个预先编写的脚本,它不是他的创造。检查nelsonwells.net/blog/2010/05/10/…【参考方案7】:userdata()
函数很可能返回一个对象,而不是字符串。查看文档(或 var_dump 返回值)以找出您需要使用的值。
【讨论】:
@sea 看看对象有什么属性,例如使用 var_dump(),并选择合适的,例如$CI->session->userdata('user_id')->username
(以“用户名”为例,我不知道您的案例中存在哪些属性)
var_dump($var)
做到了。以上是关于类 stdClass 的对象无法转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
SQL 错误可捕获的致命错误:stdClass 类的对象无法转换为字符串
WordPress:可捕获的致命错误:stdClass 类的对象无法转换为字符串