0

umat_id私はこのSQLクエリで取得しようとしました:

SELECT umat_id FROM msumat WHERE nama = $nama

この SQL クエリを CI の Active Record に変換しました。

$this->db->select('umat_id');
$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

したがって、このクエリは文字列を返す必要があります (例: "John")。

しかし、エコーしようとするとエラーが発生しました: クラス CI_DB_mysql_result のオブジェクトを文字列に変換できませんでした

私はこのようなことを試しました: echo (string)$terdaftar;、しかしそれはうまくいきません。

私が欲しいのは「ジョン」をエコーすることだけです

編集 「ジョン」を変数に挿入したいと言ったところです。どうやってするか?

$john = ????
4

3 に答える 3

5

一部のユーザーが既に解決策を指摘しているため、このエラーが発生した理由を説明するだけで、codeigniter が提供するクエリ結果をよりよく理解できるようになります。

このエラー:

しかし、エコーしようとするとエラーが発生しました: クラス CI_DB_mysql_result のオブジェクトを文字列に変換できませんでした

オブジェクトをエコーし​​ようとしていたために発生します。

このコード片

$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

オブジェクトを返します。このオブジェクトには、実行したクエリに関する情報が含まれます。このオブジェクトを使用すると、これを行うオブジェクトとして結果 (行) を取得できます。

$results = $terdaftar->result();

または、配列に慣れている場合は、結果 (行) を配列として返すことができます。

$results = $terdaftar->result_array();

これを行うことで、結果の数を取得することもできます。

$number_results = $terdaftar->num_rows()

これは単なる例です。ここで結果の詳細を読むことができます http://ellislab.com/codeigniter/user-guide/database/results.html

編集 より良い説明: result_array() 関数を使用して結果を純粋な配列形式で取得すると想像してください。

$results = $terdaftar->result_array();

これで、変数 $results は配列になりました。それを繰り返し処理して、必要なデータを取得するには、次のようにします。

foreach ($results as $key => $row) {
    //the row variable will have each row of your database returned by your query
    //so if you want to access a field from that row, 
    //let's say for example the name field. You would do something like this
    if($row['name']=='John')
        echo $row['name'];

}
于 2013-03-07T12:02:34.943 に答える
1

試す:

$this->db->select('umat_id');
$terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

foreach ($terdaftar->result() as $row)
{
    echo $row->umat_id;
}

詳細については、ドキュメントを参照してください。

于 2013-03-07T11:49:09.877 に答える
1

これを試して:

 $this->db->select('umat_id');
 $terdaftar = $this->db->get_where('msumat', array('nama' => $nama));
 $row = $terdaftar->row_array();
 $your_variable = $row['umat_id']; /*Here comes your john*/
于 2013-03-07T11:49:35.353 に答える