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

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での対応となります。


コメントを残す




Menu

HOME

 TOP