Краткий ответ: NO .
Длинный ответ:
См. Руководство PDO :: prepare .Существует оператор: This must be a valid SQL statement for the target database server.
Это означает, что ваш сервер БД должен поддерживать синтаксис подготовленного оператора, который вы используете.
Насколько я знаю, ни mysql, ни любая другая БД не допускают возникновения переменных привязкив FROM
пункте.Причина этого кроется в концепции подготовленного заявления.Подготовленный оператор готовится внутри БД, когда вы звоните prepare
.Это означает, что планировщик БД создает план для запроса, поэтому его можно выполнить несколько раз с различными параметрами , не создавая его снова и снова .Чтобы построить план, планировщик должен знать затронутые таблицы, вызываемые функции, возможности использовать различные стратегии выборки и объединения (сканирование индекса / вложенные циклы / и т. Д.) И т. Д.
Итак, вы не можете «связать»имя таблицы в подготовленный оператор в тот момент, когда вы хотите, чтобы он выполнялся, потому что БД нужны имена таблиц в тот момент, когда вы prepare
оператор.Вот почему вы получаете это сообщение: БД требует, чтобы все имена таблиц присутствовали в подготовительном запросе.