web-dev-qa-db-ja.com

Codeigniter $ this-> db-> get()、特定の行の値を返すにはどうすればよいですか?

ID、名前、および年齢の3つの列を持つデータベーステーブルがあるとします。特定の(一意の)IDを持つユーザーを見つけて、年齢を返す必要があります。現在、私は次のコードを使用しています

$this->db->where('id', '3');
$q = $this->db->get('my_users_table');

このユーザーの年齢を取得するにはどうすればよいですか?私は使用しなければならないと思います

$q->result()

しかし、1行でそれを使用する方法がわかりません。

20
Ayub

ソリューション1

$this->db->where('id', '3');
// here we select every column of the table
$q = $this->db->get('my_users_table');
$data = $q->result_array();

echo($data[0]['age']);

ソリューション2

// here we select just the age column
$this->db->select('age');
$this->db->where('id', '3');
$q = $this->db->get('my_users_table');
$data = $q->result_array();

echo($data[0]['age']);

ソリューション

$this->db->select('age');
$this->db->where('id', '3');
$q = $this->db->get('my_users_table');
// if id is unique, we want to return just one row
$data = array_shift($q->result_array());

echo($data['age']);

SOLUTION FOUR(NO ACTIVE RECORD)

$q = $this->db->query('SELECT age FROM my_users_table WHERE id = ?',array(3));
$data = array_shift($q->result_array());
echo($data['age']);
55
Dalen

result()の代わりにrow()を使用できます。

$this->db->where('id', '3');
$q = $this->db->get('my_users_table')->row();
6
Doms

単一行へのアクセス

//Result as an Object
$result = $this->db->select('age')->from('my_users_table')->where('id', '3')->limit(1)->get()->row();
echo $result->age;

//Result as an Array
$result = $this->db->select('age')->from('my_users_table')->where('id', '3')->limit(1)->get()->row_array();
echo $result['age'];
1
mobby

データを動的に取得している場合、たとえば、idの使用によってログインしたユーザーに基づいたデータが必要な場合、アクティブレコードなしの次のコード例を検討してください。

 $this->db->query('SELECT * FROM my_users_table WHERE id = ?', $this->session->userdata('id'));

 return $query->row_array();

これは、ユーザーの設定セッションデータに基づいて特定の行を返します。

0
David Martin

これを1行で使用するだけです。

$query = $this->db->get_where('mytable',array('id'=>'3'));
0
Waseem shah