Объект класса 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();
}
}
Я действительно не знаю, в чем эта проблема, поэтому любая помощь будет отличной.
8 ответов
Скорее всего, userdata()
Функция возвращает объект, а не строку. Просмотрите документацию (или var_dump возвращаемого значения), чтобы узнать, какое значение вам нужно использовать.
Я использую codeignator, и я получил ошибку:
Объект класса stdClass не может быть преобразован в строку.
за этот пост я получаю свой результат
Я использую в моем разделе модели
$query = $this->db->get('user', 10);
return $query->result();
и из этого поста я использую
$query = $this->db->get('user', 10);
return $query->row();
и я решил свою проблему
В общем избавиться от
Объект класса 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, row
echo $query2->row['option_id'];
Даст результат как 2
Как говорили другие, команда echo не может распечатать объект самостоятельно. По этой причине вы можете рассмотреть возможность использования print_r для отображения содержимого вашего объекта.
Итак, в вашем случае:
print_r($query);
Вы упомянули в другом комментарии, что не ожидаете, что ваша функция get_userdata() вернет объект stdClass? Если это так, вы должны помнить следующую строку в этой функции:
return $query->row();
Здесь объект базы данных CodeIgniter "$query" имеет вызываемый метод row(), который возвращает stdClass. Кроме того, вы можете запустить row_array(), который возвращает те же данные в виде массива.
В любом случае, я сильно подозреваю, что это не является основной причиной проблемы. Можете ли вы дать нам больше деталей, возможно? Поиграйте с некоторыми вещами и дайте нам знать, как это происходит. Мы не можем поиграть с вашим кодом, поэтому сложно сказать, что именно происходит.
Я искал способ получить данные
поэтому я использовал это $data = $this->db->get('table_name')->result_array();
а затем получил мои данные так же, как вы работаете с объектами массива.
$data[0]['field_name']
Не нужно беспокоиться о приведении типов или чем-то еще, прямо к делу.
Так что у меня это сработало.
Если у вас возникла эта проблема, это означает, что ваш массив имеет тип, в котором вы можете преобразовать его в строковый тип. Ваш объект не имеет строкового типа . Таким образом, вы можете преобразовать его этим. $data= json_decode(json_encode($data), true);
Если вы хотите больше ссылок, вы можете пойти сюда . Надеюсь, поможет.