2011-01-04 7 views
0

prepare()は、quotes(')をPDOステートメントでエスケープしませんか?私はこれを行ういくつかの理由:PDOステートメントの値をエスケープする

$sql = "INSERT INTO sessions (id, name) VALUES (1,'O'brian')"; 
$query = $this->connection->prepare($sql); 
$query->execute(); 

私はこのエラーを取得する:私はprepare()を使用している場合

Could not insert record SQLSTATE[42000]: [Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near 'brian'. 

は、これはどのようになるだろうか?

答えて

3

executeメソッドで値を渡すことはないので、自動的にエスケープされません。次はあなたのためにエスケープされます:実際に

$sql = "INSERT INTO sessions (id, name) VALUES (1, ?)"; 
$query = $this->connection->prepare($sql); 
$query->execute(array("O'brian")); 
+2

準備ができています。これが行く方法です。 –

+0

ティムはそれをしました。 – Pardoner

3

Doesn't prepare() escape any quotes(') in a PDO statement?

号、全くPDOによって行われて何のエスケープはありません。要点はバインドされたパラメータを使用することです。したがって、はエスケープする必要はありません。

関連する問題