[CodeIgniter2] INSERT IGNORE INTOを使う

公開
更新日

スポンサーリンク

CodeIgniterのActiveRecordでINSERT IGNOREを使いたかったので調べてみました。

コアファイルを改造して使えるようにしている方もいたのですが、それはちょっと避けたい方法です。英語版のフォーラムで紹介されていた方法がシンプルで非常に良かったのでメモしておきます。

$data = array( 'column_name' => 'value' )
$insert_query = $this->db->insert_string('table_name', $data );
$insert_query = str_replace('INSERT INTO','INSERT IGNORE INTO',$insert_query);
$this->db->query($insert_query);

$this->db->insert_string()を使ってSQL文を生成し、その後INSERTをINSERT IGNOREに置換するというやり方です。2行目で“INSERT INTO table_name(‘column_name’) VALUES(‘value’)”というSQL文が生成され、3行目で“INSERT IGNORE INTO~”に置換されるわけですね。

これはアクティブレコードを使った方法ではありませんが、$this->db->insert_string()でSQL文を生成することで入力値のエスケープを行ってくれます。手軽にセキュリティに配慮したSQL文を用意してくれるわけですから、フレームワークを使うことのメリットは享受できるというわけです。ということで、INSERT IGNOREを使うときはこの方法が良さそうです。

スポンサーリンク


Comment