Согласно PHP документации PDO :: подготовить() добавляет кавычки для всех ваших параметров, так что вам не придется беспокоиться о делать это:Работа с цитатами добавленными PDO :: подготовить()
«Параметры для подготовленных операторов не нужно указывать, драйвер автоматически обрабатывает это. Если приложение использует исключительно подготовленные операторы, разработчик может быть уверен, что SQL-инъекция не произойдет (однако, если другие части запроса построенный с несвязанным вводом, SQL-инъекция по-прежнему возможна). "
Проблема с этим для меня заключается в том, как я строю свои запросы и структуру базы данных. Обычно часть FROM инструкции SQL необязательно должна быть параметризована, потому что таблица, вероятно, будет определяться прямым пользовательским вводом. Однако с моим кодом, который имеет место в некоторых местах, и, таким образом, я чувствую себя более комфортно с параметризованной версией.
SELECT * FROM ? WHERE ?=?
в отличие от SELECT * FROM имя_таблицы WHERE? =?
Итак, мой вопрос заключается в том, можно ли допустить, чтобы мой объект PDO добавлял кавычки вокруг параметра FROM, чтобы я не получал SQL-ошибок, брошенных мне в лицо? Или я должен сделать это по-другому.
В чем вопрос? – jeroen
Это не обязательно добавляет кавычки. Драйверы, которые поддерживают встроенные подготовленные операторы, сохраняют литерал '?', А сервер базы данных выполняет подстановку. - Однако вам нужно объяснить, что конкретно делает ваш код, и почему здесь проблема. Добавление ''? ''Или'': placeholder'' в предложениях FROM - это литеральные строки, а не связанные параметры. – mario
Извините, я случайно попал в enter, прежде чем я закончил набирать вопрос – hamalnamal