DboSource::rawQuery()
のようにログを保存する必要があるapp/Lib
にヘルパーライブラリがあります。文章はかなり曖昧です:プリペアドステートメントを使用した未処理の挿入クエリ
/**
* Executes given SQL statement.
*
* @param string $sql SQL statement
* @param array $params Additional options for the query.
* @return bool
*/
public function rawQuery($sql, $params = array()) {
$this->took = $this->numRows = false;
return $this->execute($sql, $params);
}
...そして、私がオンラインで見つけたのは、SQLインジェクションが存在しないというふうに思っています。どんなに私がしようとするもの構文:
public function log (DataSource $db) {
$sql = 'INSERT INTO log (foo, bar)
VALUES (:foo, :bar)';
$params = array(
'foo' => 'One',
'bar' => 'Two',
);
$db->rawQuery($sql, $params);
}
...私はいつもこのようなデータベースエラーを取得していない:
SQLSTATE [42000]:[Microsoft]の[SQL ServerのODBCドライバー11] [SQL Serverの] ':'の近くの構文が正しくありません。
私も試した位置プレースホルダ(?
)、さらにはPDOのようなのparams(PDO::PARAM_STR
とし、すべてのもの)。
SQL Serverに対してCakePHP/2.5.5でパラメータ化された生のクエリを実行する構文は何ですか?