У меня сейчас проблема с 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();
}
}
Я действительно не понимаю, в чем заключается эта проблема, так что любая помощь будет отличной.
Скорее всего, функция userdata()
возвращает объект, а не строку. Посмотрите документацию (или var_dump возвращаемое значение), чтобы узнать, какое значение вам нужно использовать.
В другом комментарии вы упомянули, что не ожидаете, что ваша функция get_userdata() вернет объект stdClass? Если это так, вам следует обратить внимание на следующую строку в этой функции:
return $query->row();
Здесь у объекта базы данных CodeIgniter "$query" вызывается метод row(), который возвращает stdClass. В качестве альтернативы вы можете запустить функцию row_array(), которая возвращает те же данные в виде массива.
В любом случае, я сильно подозреваю, что это не основная причина проблемы. Не могли бы вы рассказать нам некоторые подробности, может быть? Поэкспериментируйте с некоторыми вещами и дайте нам знать, как это происходит. Мы не можем играть с вашим кодом, поэтому трудно точно сказать, что происходит.