【问题标题】:Object of class stdClass could not be converted to string类 stdClass 的对象无法转换为字符串
【发布时间】: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();
        }
    }

我现在真的不知道这个问题是什么,所以任何帮助都会很棒。

【问题讨论】:

    标签: php codeigniter object stdclass


    【解决方案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() 以数组形式返回相同的数据。

              无论如何,我强烈怀疑这不是问题的根本原因。也许你能给我们更多的细节吗?玩一些东西,让我们知道它是怎么回事。我们无法使用您的代码,因此很难确切说明发生了什么。

              【讨论】:

              【解决方案7】:

              userdata() 函数很可能返回一个对象,而不是字符串。查看文档(或 var_dump 返回值)以找出您需要使用的值。

              【讨论】:

              • @sea 看看对象有什么属性,例如使用 var_dump(),并选择合适的,例如$CI->session->userdata('user_id')->username(以“用户名”为例,我不知道您的案例中存在哪些属性)
              • var_dump($var) 做到了。
              猜你喜欢
              • 2018-10-19
              • 2020-03-16
              • 2021-11-10
              • 2014-06-12
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多