CodeIgniterを使用してMySQLテーブルにデータを挿入しています。 INSERT IGNORE INTO
を使用しているため、この機能を有効にするためにアクティブなレコードクラスを編集したくないので、SQLクエリを手動で生成しています。CodeigniterでSQLクエリをエスケープする
$this->db->query("INSERT IGNORE INTO my_table(lat, lng, date, type)
VALUES ('" . $data['lat'] . "', '" . $data['lng'] . "', '" . $data['date'] . "', '" . $data['type'] . "')");
問題:$data['type']
内の文字列は、単一引用符が含まれていたときに、クエリが失敗しました。アクティブなレコードを使用するときのように、エスケープする必要があるこれらの文字が自動的にエスケープされるようにするにはどうすればよいですか?
さらに簡単にすることができます: '$ this-> db-> query($ sql、$ data);' これは私のために働きます! (私はそれが動作するために、データ配列内の他のキーを持っているべきではないと思う) – Saneem
またはそれをActive Record Patternに書き直してください: '$ this-> db-> inset( 'some_table'、$ data);'もっとストレートフォワードと非常に簡単です。 'if(!isset($ data ['id']))throw new {InvalidArgumentException( 'data [id]は許可されていません。 for insert '); } ' – Roland