Возможно ли связатьParam в порядке по части инструкции sql. Например, возможно ли следующее?
select whatever from table where age > :age order by :user_specified_order_by_field_name_here
а если нет, то каков рекомендуемый способ убедиться, что user_specified_order_by_field_name_here
не содержит код SQL-инъекции?
Нет, PDO не поддерживает динамические имена таблиц или столбцов в качестве подготовленных значений. Любые имена столбцов, которые вы вставляете в запрос, не будут экранированы и приведут к уязвимости SQL-инъекции.
PDO :: Quote () тоже не поможет – может быть только строки, но в mySQL имена столбцов не являются строками.
Единственный 100% безопасный способ предотвратить проблемы – сравнить user_specified_order_by_field_name_here
с списком допустимых столбцов в таблице. Вы даже можете использовать числа (которые вы разрешаете внутри имен столбцов внутри), чтобы добавить дополнительный слой безвестности.