Использование CFQUERYPARAM для указания имен таблиц / столбцов в SQL - PullRequest
1 голос
/ 24 марта 2009

Мне нужно динамически создать набор операторов JOIN, в которые имена таблиц и столбцов передаются из другого запроса ColdFusion. При передаче строковых значений в оператор, CFQUERYPARAM добавляет одинарные кавычки вокруг него - это часть точки CFQUERYPARAM. Учитывая, что это нарушает оператор SQL, допустимо ли в этом случае не использовать CFQUERYPARAM и вместо этого гарантировать, что входящий запрос очищен, или существует способ, позволяющий использовать CFQUERYPARAM? (Я могу заблокировать эти фрагменты кода с помощью разрешений цепи / предохранителя в Fusebox.)

Спасибо.

Ответы [ 2 ]

3 голосов
/ 24 марта 2009

cfqueryparam не добавляет одинарные кавычки - он использует переменные связывания.

Я сразу с подозрением отношусь к утверждению «динамически создавать набор операторов JOIN» - не похоже, что вы обязательно делаете все правильно, если вы динамически присоединяетесь.

Однако для имен таблиц / столбцов: , когда вы определенно полностью очистите - если cfqueryparam не работает и вам нужны переменные cf - тогда да , вы можете использовать Переменные CF напрямую.

Примечание. Для безопасной очистки вы можете использовать rereplacenocase(table_name,'[^a-z_]','','all') для удаления всего, кроме a-z и подчеркивания.

1 голос
/ 26 марта 2009

Вы можете избежать одиночных кавычек, используя два из них. Вы также можете использовать функцию preserveSingleQuotes.

...