2011-01-04 2 views
0

Не prepare() избегать любых quotes(') в заявлении PDO? По какой-то причине, когда я делаю это:Предельные значения в заявках PDO

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

Я получаю эту ошибку:

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

Как это может быть, если я использую prepare()?

ответ

3

Поскольку вы не передаете значение в методе выполнения, оно не будет автоматически экранировано для вас. Ниже будет экранировать для вас:

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

Yay для подготовленных заявлений. Это путь. –

+0

Спасибо, Тим, который сделал это. – Pardoner

3

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

Нет. На самом деле, нет никакой возможности избежать делается ПДО на всех. Все дело в использовании связанных параметров, поэтому символов не должно быть экранировано.