50

我现在遇到了 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();
        }
    }

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

4

7 回答 7

49

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

于 2010-08-31T09:09:41.950 回答
9

我使用 codeignator,我得到了错误:

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

对于这篇文章,我得到了我的结果

我在我的模型部分使用

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

从这篇文章中我使用

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

我解决了我的问题

于 2012-06-08T09:26:34.047 回答
5

一般要摆脱

类 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

于 2018-03-19T07:12:12.193 回答
2

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

return $query->row();

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

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

于 2010-08-31T18:19:24.580 回答
2

就像其他人说的那样, echo 命令无法自行打印出对象。因此,您可以考虑使用print_r来显示对象的内容。

所以,在你的情况下:

 print_r($query);
于 2021-03-02T18:10:19.423 回答
1

试试这个

return $query->result_array();
于 2013-01-25T08:48:48.107 回答
0

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

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

然后就像您对数组对象进行操作一样获取我的数据。

$data[0]['field_name']

无需担心类型转换或任何直截了当的事情。

所以它对我有用。

于 2019-06-09T20:04:14.183 回答