東京うぇ部

PHPをメインにしたプログラム情報共有サイト

CakePHP

CakePHPでプリペアドステートメント

CakePHPで複雑なSQLを組むときとかって、

直クエリを実行する事って多々あると思います。

1
2
3
4
5
6
7
8
9
10
11
$sql = '
    SELECT
        *
    FROM
        users
    WHERE
        status = \'1\'
        AND name = \'test\'
';
 
$this->Model->query($sql);

今回はほんとに簡単なクエリになりますが。。

ただ上記だとセキュリティ的によくありません。

例えば、

1
AND name = \'test\'

こちらの値を、webのformから取得した値をそのまま入れるとすれば

SQLインジェクションの被害にある恐れがあります。

そこでCakePHPでは以下のようにすればプリペアドステートメントを利用できます。

1
2
3
4
5
6
7
8
9
10
11
12
13
$sql = '
    SELECT
        *
    FROM
        users
    WHERE
        status = ?
        AND name = ?
';
 
$params = array($status, $test);
 
$this->Model->query($sql, $params);

簡単ですのでおすすめです。

ちなみにこちらCakePHP1.3での対応となります。

コメントを残す




このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事