目次
■SELECT系
組み立て
$this->db->select('field1,field2,field3,field4,field5')
->from('table1')
->where('field1', 'xxx')
->where('field2', 'yyy')
->order_by('field1', 'DESC')
->limit(10)
->offset(20)
SELECT field1,field2,field3,field4,field5
FROM table1
WHERE field1 = 'xxx' AND field2 = 'yyy'
ORDER BY field1 DESC
LIMIT 10
OFFSET 20;
※各メソッドを『->』で結合することで連続処理できる(メソッドチェーン)
もちろん分解もできるのでIF文等の介入が容易。
$this->db->select('*')
->from('table1')
->where('field1', '123');
if ($cond) {
$this->db->where('field2', '345');
}
※where()を複数使用するとANDで接合される。
ORで接合する場合はor_where()メソッドが用意されている。
[ANDとORが混在する場合]
->where('field1', 'xxx')
->where('field2', 'yyy')
->or_where('field3', 'zzz')
WHERE field1 = 'xxx' AND field2 = 'yyy' OR field3 = 'zzz'
グループ化することで使い分け
->group_start()
->where('field1', 'xxx')
->where('field2', 'yyy')
->group_end()
->or_where('field3', 'zzz')
WHERE (field1 = 'xxx' AND field2 = 'yyy') OR field3 = 'zzz'
※IN句
->where_in('field3', $array)
->or_where_in('field3', $array)
※LIKE句
->like('field4', 'abc') field4 LIKE '%abc%' ESCAPE '!'
->like('field4', 'abc', 'before') field4 LIKE '%abc' ESCAPE '!'
->like('field4', 'abc', 'after') field4 LIKE 'abc%' ESCAPE '!'
※JOIN句
->from('table1 AS t1')
->join('table2 AS t2', 't1.id = t2.id', 'left')
FROM table1 AS t1 LEFT JOIN table2 ON t1.id = t2.id
※利用できない特殊な場合は直接SQL文が書ける。
->query('SQL文を直接記述');
結果を取得
単一行
row()
オブジェクトとして返す。row_object()も同じ。
※特定の行を取得するには引数に行番号を指定。
row_array()
配列として返す。
複数行
result()
オブジェクトとして返す。row_object()も同じ。
result_array()
配列として返す。
$data = $this->db->select('field1, field2')
->from('table1')
->get()
->result_array();
クエリを発行+結果セットを返す(get)
$query = $this->db->select('field1, field2')
->from('table1')
->get();
get_where(テーブル名, where条件(配列))で簡単取得
$query = $this->db->select('field1, field2')
->get_where('table1', ['id' => 1]);
■INSERT
insert(テーブル名, データ配列)
$data = ['field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3'];
$this->db->insert('table1', $data);
INSERT INTO table1 (field1, field2, field3) VALUES ('value1', 'value2', 'value3');
■UPDATE
update(テーブル名, データ配列, where条件(配列));
$data = ['field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3'];
$this->db->update('table1', $data, ['id' => 2]);
■DELETE
delete(テーブル名, where条件(配列))
$this->db->delete('table1', ['id' => 2]);
■TRUNCATE
truncate(テーブル名)
$this->truncate('table1');
■その他
直前に挿入したデータのidをを返す
$this->db->insert_id()
直前のクエリで影響された行数を返す
$this->db->affected_rows()
直前に実行したクエリを返す
$this->db->last_query()
トランザクション
// Start
$this->db->trans_begin();
・・・
if ($this->db->trans_status() === FALSE) {
// Rollback
$this->db->trans_rollback();
return false;
} else {
// Commit
$this->db->trans_commit();
return true;
}