Объект класса stdClass не может быть преобразован в строку

У меня сейчас проблема с PHP, я получаю эту ошибку,

Объект класса stdClass не может быть преобразован в строку ошибка возникает, когда я запускаю эту часть кода на моем сайте,

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();
        }
    }

Я действительно не понимаю, в чем заключается эта проблема, так что любая помощь будет отличной.

29
задан sea_1987 31 August 2010 в 09:07
поделиться

2 ответа

Скорее всего, функция userdata() возвращает объект, а не строку. Посмотрите документацию (или var_dump возвращаемое значение), чтобы узнать, какое значение вам нужно использовать.

37
ответ дан 28 November 2019 в 01:36
поделиться

В другом комментарии вы упомянули, что не ожидаете, что ваша функция get_userdata() вернет объект stdClass? Если это так, вам следует обратить внимание на следующую строку в этой функции:

return $query->row();

Здесь у объекта базы данных CodeIgniter "$query" вызывается метод row(), который возвращает stdClass. В качестве альтернативы вы можете запустить функцию row_array(), которая возвращает те же данные в виде массива.

В любом случае, я сильно подозреваю, что это не основная причина проблемы. Не могли бы вы рассказать нам некоторые подробности, может быть? Поэкспериментируйте с некоторыми вещами и дайте нам знать, как это происходит. Мы не можем играть с вашим кодом, поэтому трудно точно сказать, что происходит.

1
ответ дан 28 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: