Экранирование значений в выражениях PDO - PullRequest
0 голосов
/ 05 января 2011

Не prepare() не экранирует quotes(') в выражении 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()?

Ответы [ 2 ]

3 голосов
/ 05 января 2011

Не готовит () экранирование кавычек (') в инструкции PDO?

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

3 голосов
/ 05 января 2011

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

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