PHPプログラムに関する各種メモ書き

CodeIgniter の DB操作

● SQL直接実行

$sql = 'DROP TABLE IF EXISTS my_table';
$query = $this->db->query($sql);
echo $query->result_array();

● WHERE句( AND WHERE )

$array = array('name' => 'hoge');
$this->db->where($array); 
$array = array('title' => 'fuga');
$this->db->where($array); 

生成されるSQL

WHERE name = 'hoge' AND title = 'fuga'

● WHERE句( OR WHERE )

$array = array('name' => 'hoge');
$this->db->where($array); 
$array = array('title' => 'fuga');
$this->db->or_where($array); 

生成されるSQL

WHERE name = 'hoge' OR title = 'fuga'

● WHERE句( BINARY )大文字小文字を区別して検索する

$where = "user_code_name = " . 'BINARY '.$this->db->escape($user_code_name);
$query = $this->db->get_where('my_table', $where, 1, 0);

実行されるSQL

SELECT * FROM `my_table` WHERE user_code_name = BINARY 'H123546789abc' LIMIT 1

● LIKE文( AND LIKE , OR LIKE )

$like = array( 'title_name' => 'mail' );
$this->db->like($like);

$like = array( 'content_name' => 'mail' );
$this->db->or_like($like);

生成されるSQL

WHERE "title_name" LIKE '%mail%' ESCAPE '!'
OR  "content_name" LIKE '%mail%' ESCAPE '!'

● LIKE文(SQL文を記述)

$v = '%%%';
$v = $this->db->escape_like_str($v);
$where = "(title_name like '%{$v}%' OR content_name like '%{$v}%' )";
$this->db->where($where);

生成されるSQL

WHERE ("title_name" like '%!%!%!%%' OR "content_name" like '%!%!%!%%' )

● ORDER BY

$this->db->order_by('title DESC, name ASC');

● UPDATE文 ( テーブル my_table を UPDATE する )

$update_hash = array();
$this->db->where('admin_id', $admin_hash['admin_id'] );
$this->db->update('my_table', $update_hash);

● データベースの設定情報にアクセスする

$this->db->hostname
$this->db->username
$this->db->password
$this->db->database

● いま接続しているデータベースのテーブル数を取得する( MySQL )

$sql = "select count(*) AS COUNT from `information_schema`.`tables` where `table_schema` = '" . $this->db->database . "'";
$query = $this->db->query($sql);
$hash = $query->result_array()[0];

● クエリヘルパーメソッド

● データベースに行を挿入したときに、挿入した ID 番号を取得します。

$inserted_id = $this->db->insert_id();
echo $inserted_id;

● 書き込み」タイプのクエリ(insert、update、など) が実行されたとき、処理された行の数を取得

$rows = $this->db->affected_rows()
echo $rows;

● DBへの操作実行後に実行したSQL文を取得する(最後に実行されたクエリを取得)

$last_sql = $this->db->last_query();
echo $last_sql;

関連エントリー

No.1077
11/12 23:54

edit

CodeIgniter