我有清理一堆旧的 ColdFusion 代码的不幸任务。查询无处不在,我正在努力将它们全部转移到常见的 CFC 以便于维护。
我遇到了一个问题,因为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
你看,我的报价被“清理”成无效的查询。