2011-01-04 4 views
0

Nicht prepare() Escape beliebige quotes(') in einer PDO-Anweisung? Aus irgendeinem Grund, wenn ich dies tun:Escape-Werte in PDO-Anweisungen

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

ich diesen Fehler:

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

Wie kann das sein, wenn ich prepare() bin mit?

Antwort

3

Da Sie den Wert in der execute-Methode nicht übergeben, wird er nicht automatisch für Sie maskiert. Im Folgenden würde für Sie entkommen:

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

Yay für vorbereitete Aussagen. Dies ist der Weg zu gehen. –

+0

Danke Tim das ist es. – Pardoner

3

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

Nein In der Tat gibt es keine überhaupt von PDO getan Umschreibungen werden. Der springende Punkt ist, gebundene Parameter zu verwenden, daher müssen keine Zeichen maskiert werden.