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