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

sea*_*987 29 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);
}
Run Code Online (Sandbox Code Playgroud)

发生错误的行是这一行,

$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
Run Code Online (Sandbox Code Playgroud)

而这一行正在调用这个函数,

   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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

Pek*_*ica 37

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

  • 它返回一个对象如何解决这个错误? (2认同)
  • @sea查看对象有哪些属性,例如使用var_dump(),并选择适当的属性,例如`$ CI-> session-> userdata('user_id') - > username`("用户名"是一个例子,我不知道您的案例中存在哪些属性) (2认同)
  • `var_dump($var)` 做到了。 (2认同)

小智 6

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

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

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

我在我的模型部分使用

$query = $this->db->get('user', 10);
        return $query->result();
Run Code Online (Sandbox Code Playgroud)

从这篇文章我用

$query = $this->db->get('user', 10);
        return $query->row();
Run Code Online (Sandbox Code Playgroud)

我解决了我的问题


Nɪs*_*ʜ ॐ 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
                )

        )

)
Run Code Online (Sandbox Code Playgroud)

为了访问有不同的方法,例如:num_rows、row、rows

echo $query2->row['option_id'];
Run Code Online (Sandbox Code Playgroud)

将结果为2


小智 5

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

所以,就你而言:

 print_r($query);
Run Code Online (Sandbox Code Playgroud)