我有清理一堆旧的ColdFusion代码的不幸任务。查询到处都是,我正在努力将它们全部转移到常用的CFC上,以便于维护。如何覆盖ColdFusion中的SQL清理
我遇到了问题,因为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
您知道,我的引语被“消毒”为无效查询。
另请参阅http:// stackoverflow。com/questions/266586/coldfusion-adding-extra-quotes-when-construct-database-queries-in-strings – ale 2009-06-02 19:39:53