PDO: цитаты в SQL - PullRequest
       1

PDO: цитаты в SQL

1 голос
/ 29 июля 2011

Я вижу странность, когда пытаюсь выполнить запрос с помощью PDO.Следующий код не должен возвращать результаты, но это так:

$safe_path = $this->_databaseConnection->quote($unsafe_path);
$sql = "SELECT * FROM routes WHERE path=$safe_path LIMIT 1";
$statement_handle = $this->_databaseConnection->query($sql);
var_dump($statement_handle->fetchAll());

Я запутался, потому что вокруг переменной $safe_path нет одинарных кавычек, как было бы, если бы я использовал расширение mysqli- но это работает.Если я заключу $safe_path в кавычки, результаты не будут возвращены.Это кажется мне странным.

Ответы [ 3 ]

2 голосов
/ 29 июля 2011

Метод PDO quote просто добавляет кавычки в строковом контексте.

http://php.net/manual/en/pdo.quote.php

PDO :: quote () помещает кавычки вокруг входной строки (если требуется) [...]

2 голосов
/ 29 июля 2011

Вы уже цитируете переменную $safe_path с первой строкой в ​​примере:

$safe_path = $this->_databaseConnection->quote($unsafe_path);

Вот почему он работает как есть. Если вы попытаетесь сами добавить кавычки в:

$sql = "SELECT * FROM routes WHERE path='$safe_path' LIMIT 1";

, тогда вы бы удвоили кавычки и, следовательно, разбили SQL-запрос.

Для получения дополнительной информации см. Справочную страницу для quote():

PDO :: quote () помещает кавычки вокруг входной строки (если требуется) и экранирует специальные символы во входной строке, используя кавычки стиль, соответствующий базовому драйверу.

1 голос
/ 29 июля 2011

Вы не добавляете кавычки?

$safe_path = $this->_databaseConnection->quote($unsafe_path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...