Имя таблицы в качестве параметра с использованием подготовленного оператора PDO / MySQL - PullRequest
2 голосов
/ 25 сентября 2011

Возможно ли это?например,

SELECT * FROM :database WHERE id = :id

Если нет, я должен просто сделать это:

SELECT * FROM ' . $database . ' WHERE id = :id

Или есть какой-то другой трюк, который мне нужно изучить?

Ответы [ 2 ]

3 голосов
/ 25 сентября 2011

Передавать динамически построенные имена таблиц в запросе довольно опасно.Но если это так необходимо вашему приложению, вы должны очистить данные.Поскольку PDO не может помочь с этим, вы должны вызвать mysql_real_escape_string для имени таблицы самостоятельно.Также вам придется заключить имя таблицы в кавычки в виде `table_name`.Поэтому подготовьте запрос следующим образом:

'SELECT * FROM `' . mysql_real_escape_string($database) . '` WHERE id = :id

Одно примечание: mysql_real_escape_string требуется уже установленное соединение с БД.

РЕДАКТИРОВАТЬ: Но когда я думаю об этом, вероятно, лучше всего сопоставить переменную $database с вашими существующими таблицами.

3 голосов
/ 25 сентября 2011

Имена таблиц и столбцов не могут быть заменены параметрами в PDO.см. Может ли оператор PHP PDO принимать имя таблицы или столбца в качестве параметра?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...