Есть ли способ использования метода PHP PDO :: quote без создания соединения?

Я использую PDO :: quote для генерации операторов SQL. Я использую сгенерированный SQL для создания ключа memcached . Я бы хотел избежать создания соединения исключительно для того, чтобы избежать значений SQL.

Для чего необходимо установить соединение для использования метода PDO :: quote, и его можно избежать?

Вам нужно соединение, потому что понятие экранирующих переменных имеет смысл только в контексте соединения с базой данных, в отношении которого они должны быть экранированы. Различные символы могут интерпретироваться по-разному, скажем, MySQL и PostgreSQL, или в зависимости от набора символов соединения. Поэтому нет смысла говорить об экранировании переменных в вакууме, вам нужно понять, как интерпретировать полученную строку.

Возможно, вы могли бы использовать что-то еще в качестве ключа к memcached.

Поскольку PDO является уровнем абстракции, и каждый метод цитирования базы данных отличается. PDO должен знать базу данных WHICH, которую вы собираетесь использовать, чтобы иметь возможность использовать правильные вызовы API цитирования / экранирования.

Если вы знаете драйвер, с которым SQL будет использоваться, просто напишите функцию, например,

 /** * @param {string|int|null} $data * @return string */ function quote ($data) { if (is_float($data) || is_int($data)) { return $data; } else if (is_string($data)) { return '\'' . addslashes($data) . '\''; } else if ($data) { throw new Exception('Invalid data type.'); } else { return 'NULL'; } } 

Пример использования: у вас есть программа CLI, которая используется для генерации кода SQL, который будет запущен позже другой программой. В этом случае установление соединения MySQL является избыточным и может быть нежелательным.