CodeIgniter

CRUD

CRUDとは (Create, Read, Update, Delete) クラッド: - IT用語辞典

CRUDとは、データベース管理システム(DBRS)に必要とされる4つの主要な機能、「作成(Create)」「読み出し(Read)」「更新(Update)」「削除(Delete)」をそれぞれ頭文字で表したもののことである。

Create

INSERT は既存テーブルに新しい行を挿入します。
INSERT ... VALUES と INSERT ... SET 型のステートメントは、明示的に指定された値に基づいて行を挿入します。
INSERT ... SELECT 型は別のテーブルから選択された行を挿入します。

#code(sql){{
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

   [INTO] tbl_name [(col_name,...)]
   VALUES ({expr | DEFAULT},...),(...),...
   [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

}}

または:

#code(sql){{
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

   [INTO] tbl_name
   SET col_name={expr | DEFAULT}, ...
   [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

}}

または:

#code(sql){{
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]

   [INTO] tbl_name [(col_name,...)]
   SELECT ...
   [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

}}

#code(php){{
function insert($arg) {

 $this->load->database();
 $sql = 'INSERT IGNORE `table_name` SET
   `column_name1` = ? ,
   `column_name2` = ? ,
   `column_name3` = ?';
 $param = array($arg[1], $arg[2], $arg[3]);
 $this->db->query($sql, $param);
 return $this->db->insert_id();

}
}}

http://codeigniter.jp/user_guide_ja/database/helpers.html

$this->db->insert_id()
データベースに行を挿入したときに、挿入した ID 番号を取得します。

Read

SELECT は、1つまたは複数のテーブルから選択した行を検索するために利用され、UNION ステートメントとサブクエリを含む事ができます。

WHERE 条項がもしあれば、それは行が選択される為に満たさなければいけない条件を指示します。
where_condition は選択される行が真であるかを確認する式です。
ステートメントは、もし WHERE 条項がなければ全ての行を選択します。

WHERE 条項の中では、総計 (要約) 関数以外の、MySQL がサポートする関数や演算子の全てを利用する事ができます。

#code(sql){{
SELECT

   [ALL | DISTINCT | DISTINCTROW ]
     [HIGH_PRIORITY]
     [STRAIGHT_JOIN]
     [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
     [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
   select_expr, ...
   [FROM table_references
   [WHERE where_condition]
   [GROUP BY {col_name | expr | position}
     [ASC | DESC], ... [WITH ROLLUP]]
   [HAVING where_condition]
   [ORDER BY {col_name | expr | position}
     [ASC | DESC], ...]
   [LIMIT {[offset,] row_count | row_count OFFSET offset}]
   [PROCEDURE procedure_name(argument_list)]
   [INTO OUTFILE 'file_name' export_options
     | INTO DUMPFILE 'file_name'
     | INTO @var_name [, @var_name]]
   [FOR UPDATE | LOCK IN SHARE MODE]]

}}

#code(php){{
function select_all($arg) {

 $this->load->database();
 $sql = 'SELECT * FROM `table_name` WHERE `column_name` = ?';
 $param = array($arg);
 $query = $this->db->query($sql, $param);
 return $query->result_array();

}
}}

#code(php){{
function select_one($arg) {

 $this->load->database();
 $sql = 'SELECT * FROM `table_name` WHERE `column_name` = ?';
 $param = array($arg);
 $query = $this->db->query($sql, $param);
 return $query->row_array();

}
}}

http://codeigniter.jp/user_guide_ja/database/results.html

$query->num_rows()
クエリで返された行数を取得します。

#code(php){{
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();
}}

Update

単一テーブル構文には、UPDATE ステートメントは新しい値を利用して tbl_name 内に既存行のカラムを更新します。
SET 条項は、どのカラムを変更し、それらにはどの値が与えられるべきかという事を指示します。
もし WHERE 条項が与えられたら、それはどの行を更新するべきかを決定します。WHERE 条項が無ければ、全ての行が更新されます。
もし ORDER BY 条項が指定されると、指定された順に行が更新されます。
LIMIT 条項は、更新できる行数に制限を設定します。

#code(sql){{
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name

   SET col_name1=expr1 [, col_name2=expr2 ...]
   [WHERE where_condition]
   [ORDER BY ...]
   [LIMIT row_count]

}}

#code(php){{
function update($arg, $where) {

 $this->load->database();
 $sql = 'UPDATE `table_name` SET
     `column_name1` = ? ,
     `column_name2` = ? ,
     `column_name3` = ?
   WHERE
     `column_name4` = ?';
 $param = array($arg[1], $arg[2], $arg[3], $where);
 $this->db->query($sql, $param);
 return $this->db->affected_rows();

}
}}

ユニークな値なら「UPDATE IGNORE」にする。

http://codeigniter.jp/user_guide_ja/database/helpers.html

$this->db->affected_rows()
「書き込み」タイプのクエリ (insert、update、など) が実行されたとき、処理された行の数を取得します。

Delete

MySQL DELETE 構文
http://dev.mysql.com/doc/refman/5.1/ja/delete.html

単一テーブル構文に対しては、DELETE ステートメントが tbl_name から行を削除し、削除された行数を返します。
もし WHERE 条項が与えられたら、それはどの行を削除するべきかを決定します。
WHERE 条項が無ければ、全ての行が削除されます。
もし ORDER BY 条項が指定されると、指定された順に行が削除されます。
LIMIT 条項は、削除できる行数に制限を設定します。

#code(sql){{
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name

   [WHERE where_condition]
   [ORDER BY ...]
   [LIMIT row_count]

}}

#code(php){{
function delete($arg) {

 $this->load->database();
 $sql = 'DELETE FROM `table_name` WHERE `column_name` = ?';
 $param = array($arg);
 $this->db->query($sql, $param);
 return $this->db->affected_rows();

}
}}


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS