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のオブジェクトを文字列に変換できませんでした。
私のSQLクエリにecho '<pre>'; print_r($sql_query);
を使用してみてください
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、rows)
echo $query2->row['option_id'];
結果は2として与えられます
これを試して
return $query->result_array();
別のコメントで、get_userdata()関数がstdClassオブジェクトを返すことを期待していないと述べましたか?その場合は、その関数の次の行を気にする必要があります。
return $query->row();
ここで、CodeIgniterデータベースオブジェクト「$ query」には、stdClassを返すrow()メソッドが呼び出されます。または、row_array()を実行して、配列形式で同じデータを返します。
とにかく、これが問題の根本的な原因ではないと強く思う。もっと詳細を教えていただけますか?いくつかのことで遊んで、それがどうなるか教えてください。私たちはあなたのコードで遊ぶことができないので、何が起こっているのかを正確に言うのは難しいです。
私が探していたのは、データを取得する方法です
だから私はこれを使用した$data = $this->db->get('table_name')->result_array();
配列オブジェクトを操作するようにデータを取得しました。
$data[0]['field_name']
型キャストや、ポイントにまっすぐに何かを心配する必要はありません。
だからそれは私のために働いた。