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

zbsbpyhn  于 2022-12-07  发布在  其他
关注(0)|答案(8)|浏览(169)

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

我真的不知道这个问题是什么,所以任何帮助都是伟大的。

gv8xihay

gv8xihay1#

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

pxq42qpu

pxq42qpu2#

我使用了codeignator,但出现了错误:
类stdClass的对象无法转换为字符串。
对于这篇文章,我得到了我结果
我在模型部分使用

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

从这篇文章我用

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

我解决了我的问题

pu3pd22g

pu3pd22g3#

在一般摆脱
类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
                )

        )

)

访问有不同的方法,例如:行数,行,行

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

将给予结果2

f8rj6qna

f8rj6qna4#

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

print_r($query);
x3naxklr

x3naxklr5#

你在另一条评论中提到,你不希望get_userdata()函数返回一个stdClass对象。如果是这样的话,你应该注意函数中的这一行:

return $query->row();

这里,CodeIgniter数据库对象“$query”调用了row()方法,该方法返回一个stdClass。或者,您可以运行row_array(),它以数组形式返回相同的数据。
无论如何,我强烈怀疑这不是问题的根本原因。你能给予我们一些更详细的信息吗?试着做一些事情,让我们知道它的进展。我们不能试着做你的代码,所以很难说到底发生了什么。

jljoyd4f

jljoyd4f6#

试试这个

return $query->result_array();
k4aesqcs

k4aesqcs7#

我想找的是一种方法
所以我用了$data = $this->db->get('table_name')->result_array();
然后获取我的数据,就像操作数组对象一样。
$data[0]['field_name']
不需要担心类型转换或任何事情,只要直奔主题。
所以对我很有效。

wkftcu5l

wkftcu5l8#

如果你有这个问题,这意味着你的数组是在一个类型,你可以把它转换成字符串类型。你的对象不是在字符串类型。所以你可以转换它如下。$data= json_decode(json_encode($data),true);
如果你想要更多的参考资料,你可以去here。希望对你有帮助。

相关问题