No.471
【CakePHP】生SQLに安全に値を仕込む
生SQLのサニタイズってどうやるの…
生SQL中に直接値を書き込まずにプリペアードステートメントを使うことで、サニタイズの自動化がおこなえる。
また、なにより視覚的にも解りやすく記述することができる。
use Cake\Datasource\ConnectionManager;
$connection = ConnectionManager::get('default');
$results = $connection
->execute('SELECT * FROM テーブル名 WHERE カラム1=:value1', ['value1' => '値'])
->fetchAll('assoc')
これにより下記のSQLが実行される。
SELECT * FROM テーブル名 WHERE カラム1=値;
この方法最大の利点は、サニタイズだけでなく、文字列の囲み処理もCakePHPに任せてよいところだと思う。手動で行うととにかくソースが見づらくなるので。
フレームワークを多用するとプログラム能力が落ちるという意見もあるが、開発で使わざるを得ないなら最大限使い倒そう。
…なんかこの台詞、前にも書いたな…