Подтвердить что ты не робот

Объект класса 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();
        }
    }

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

4b9b3361

Ответ 1

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

Ответ 2

Я использую codeignator, и я получил ошибку:

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

для этого сообщения я получаю свой результат

Я использую в разделе моей модели

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

и из этого сообщения я использую

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

и я решил свою проблему

Ответ 3

В общем избавиться от

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

попробуйте использовать echo '<pre>'; print_r($sql_query); 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, row

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

Даст результат как 2

Ответ 4

попробуйте это

return $query->result_array();

Ответ 5

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

return $query->row();

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

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

Ответ 6

То, что я искал, это способ получения данных

поэтому я использовал этот $data = $this->db->get('table_name')->result_array();

а затем получил мои данные так же, как вы работаете с объектами массива.

$data[0]['field_name']

Не нужно беспокоиться о приведении типов или о чем-то другом.

Так что у меня получилось.