[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を使うときはこの方法が良さそうです。
スポンサーリンク
CodeIgniterカテゴリーの投稿
- [CodeIgniter3] クエリービルダーのINSERTでエスケープを行わない
- [CodeIgniter3] CRONでコントローラーのメソッドを呼び出す
- [CodeIgniter3] さくらレンタルサーバー設置時の.htaccess
- [CodeIgniter3] ControllerとViewを作成
- [CodeIgniter3] xampp開発環境へのインストール
- [CodeIgniter2] サイトマップを作る
- [CodeIgniter2] form_open()のメソッドをGETにする
- [CodeIgniter2] 多言語化時にオートロードで任意言語ファイルを読み込む
- [CodeIgniter2] ActiveRecordクラスjoinメソッド
- [CodeIgniter2] アクティブレコードでReplace文を使う