web-dev-qa-db-ja.com

クラス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();
        }
    }

私は今、この問題が何であるかを本当に知らないので、どんな助けも素晴らしいでしょう。

28
sea_1987

おそらく、userdata()関数は文字列ではなくオブジェクトを返しています。ドキュメンテーション(または戻り値のvar_dump)を調べて、使用する必要がある値を見つけます。

36
Pekka 웃

Codeignatorを使用すると、エラーが発生しました。

クラスstdClassのオブジェクトを文字列に変換できませんでした。

この投稿の結果を取得します

モデルセクションで使用します

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

そして、この投稿から私は使用します

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

そして問題を解決しました

6
roshan

一般的に取り除く

クラス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として与えられます

3
Nishanth ॐ

これを試して

return $query->result_array();
2
Roopchand

別のコメントで、get_userdata()関数がstdClassオブジェクトを返すことを期待していないと述べましたか?その場合は、その関数の次の行を気にする必要があります。

return $query->row();

ここで、CodeIgniterデータベースオブジェクト「$ query」には、stdClassを返すrow()メソッドが呼び出されます。または、row_array()を実行して、配列形式で同じデータを返します。

とにかく、これが問題の根本的な原因ではないと強く思う。もっと詳細を教えていただけますか?いくつかのことで遊んで、それがどうなるか教えてください。私たちはあなたのコードで遊ぶことができないので、何が起こっているのかを正確に言うのは難しいです。

1
treeface

私が探していたのは、データを取得する方法です

だから私はこれを使用した$data = $this->db->get('table_name')->result_array();

配列オブジェクトを操作するようにデータを取得しました。

$data[0]['field_name']

型キャストや、ポイントにまっすぐに何かを心配する必要はありません。

だからそれは私のために働いた。

0
Vicky Salunkhe