проблема с использованием порядкового значения для ссылки на столбец состоит в том, что это (я полагаю) порядковое значение во время выполнения оператора SQL создания таблицы - так, как вы добавляете столбцы в таблицу базы данных с течением времени, инструмент GUI вы используете для отображения столбцов может не представлять его фактическое порядковое значение. я бы действительно избежал использования cfqueryparam для этого.
Мне нравится идея использовать число в переменных запроса (url, form), чтобы указать, по какому столбцу сортировать, а затем использовать его в коммутаторе и преобразовать его в фактическое имя столбца, чтобы вы не выставляли свой столбец. имена для пользователя.
Что касается того, когда / зачем использовать cfqueryparam, имейте в виду, что он НЕ только для проверки ввода и предотвращения внедрения SQL (хотя это очень приятный бонус) - с помощью cfqueryparam базовый SQL в базу данных отправляется обратно через драйвер используя переменные связывания SQL - значения местозаполнителя, поэтому оптимизатор базы данных может определить, какой индекс использовать в более общем формате ... поэтому, когда вы отправляете инструкцию SQL следующим образом: SELECT * FROM product WHERE ID = 1 и SELECT * FROM product WHERE ID = 2 оптимизатор работает оба раза. но с переменными связывания SQL выглядит так: SELECT * FROM product WHERE ID =? (? = 1) и ВЫБРАТЬ * ИЗ ПРОДУКТА, ГДЕ ID =? (? = 2), поэтому оптимизатор может использовать кэшированные результаты первого анализа, чтобы точно знать, какой индекс использовать во втором запросе. в зависимости от сложности SQL и базы данных это может быть ОГРОМНОЙ экономией времени. По моему опыту, это очень полезно для производительности с колонками оракула и даты / времени в предложении where.
что касается того, где использовать cfqueryparam, то где можно использовать переменную связывания SQL ...
НТН
джон