类 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 的对象无法转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

类 stdClass 的对象的问题无法转换为字符串

SQL 错误可捕获的致命错误:stdClass 类的对象无法转换为字符串

WordPress:可捕获的致命错误:stdClass 类的对象无法转换为字符串

报错:使用 maatwebsite 导出到 excel 时,stdClass 类的对象无法转换为字符串

将 stdClass 对象转换/转换为另一个类

如何将 stdClass 对象打印为字符串?