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

时间:2010-08-31 09:07:04

标签: php codeigniter object stdclass

我目前遇到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();
        }
    }

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

7 个答案:

答案 0 :(得分:34)

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

答案 1 :(得分:5)

我使用codeignator并收到错误:

  

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

这篇文章我得到了我的结果

我在我的模型部分中使用

$query = $this->db->get('user', 10);
        return $query->result();

从这篇文章我用

$query = $this->db->get('user', 10);
        return $query->row();

我解决了我的问题

答案 2 :(得分: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
                )

        )

)

为了访问,有不同的方法E.g。:num_rows,row,rows

echo $query2->row['option_id'];

将结果显示为 2

答案 3 :(得分:1)

你在另一条评论中提到你不期望你的get_userdata()函数返回一个stdClass对象?如果是这种情况,您应该注意该函数中的这一行:

return $query->row();

这里,CodeIgniter数据库对象“$ query”调用了row()方法,该方法返回一个stdClass。或者,您可以运行row_array(),它以数组形式返回相同的数据。

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

答案 4 :(得分:1)

试试这个

return $query->result_array();

答案 5 :(得分:1)

就像其他人说的,echo 命令不能自己打印对象。 因此,您可以考虑使用 print_r 来显示对象的内容。

所以,就你而言:

 print_r($query);

答案 6 :(得分:0)

我一直在寻找一种获取数据的方法

所以我用了这个$data = $this->db->get('table_name')->result_array();

然后像在数组对象上操作一样获取我的数据。

$data[0]['field_name']

无需担心类型转换或任何直接的问题。

所以对我有用。