У меня неудачная задача - очистить кучу старого кода ColdFusion. Запросы повсюду, я работаю над тем, чтобы перевести их на общие ХФУ для упрощения обслуживания.
Я столкнулся с проблемой, потому что cfquery
автоматически преобразует одинарные кавычки в двойные-одинарные. Как я могу отменить это поведение?
Более подробная информация приведена ниже.
Итак, вот запрос, с которого я начал:
<cfquery name="getObjectInfo" datasource="#BaseDS#">
SELECT groupName AS lastname, '[Group]' AS firstname
FROM groups
WHERE groups.group_id = #objectreference_id#
</cfquery>
Странная вещь здесь в том, что литерал «выбирается» из-за того, как мы хотим, чтобы он отображался (опять же, я не писал этого, я просто пытаюсь немного его очистить). Таким образом, в общей функции есть необязательный параметр для предложения select:
<cffunction name="fSelGroup" access="public" returntype="query"
hint="Returns query selecting given group.">
<cfargument name="intGroupID" type="numeric" required="true"
hint="ID of group to be returned." />
<cfargument name="strSelectAttributes" type="string" required="false"
hint="Attributes to be selected in query"
default="*" />
<cfquery name="getObjectInfo" datasource="#Application.DataSource#">
SELECT #Arguments.strSelectAttributes#
FROM Groups
WHERE Group_ID = #Arguments.intGroupID#
</cfquery>
<cfreturn getObjectInfo />
</cffunction>
Вот проблема : Когда я передаю "GroupName AS LastName, '[Group]' AS FirstName"
для параметра strSelectAttributes, запрос, который отправляется в базу данных:
SELECT GroupName AS LastName, ''[Group]'' AS FirstName
FROM Groups
WHERE Group_ID = 4
Видите ли, мои цитаты "санированы" в неверный запрос.