CakePHPでプリペアドステートメント
この記事は13年以上前に書かれたものです。内容が古くなっている可能性があります。
CakePHPで複雑なSQLを組むときとかって、
直クエリを実行する事って多々あると思います。
$sql = '
SELECT
*
FROM
users
WHERE
status = \'1\'
AND name = \'test\'
';
$this->Model->query($sql);
今回はほんとに簡単なクエリになりますが。。
ただ上記だとセキュリティ的によくありません。
例えば、
AND name = \'test\'
こちらの値を、webのformから取得した値をそのまま入れるとすれば
SQLインジェクションの被害にある恐れがあります。
そこでCakePHPでは以下のようにすればプリペアドステートメントを利用できます。
$sql = '
SELECT
*
FROM
users
WHERE
status = ?
AND name = ?
';
$params = array($status, $test);
$this->Model->query($sql, $params);
簡単ですのでおすすめです。
ちなみにこちらCakePHP1.3での対応となります。