Tengo la desafortunada tarea de limpiar un montón de código ColdFusion anterior. Las consultas están por todos lados, estoy trabajando en moverlas todas a CFC comunes para un mantenimiento más fácil.Cómo anular la desinfección de SQL en ColdFusion
Me encuentro con un problema porque cfquery
convierte automáticamente las comillas simples en comillas dobles. ¿Cómo puedo anular ese comportamiento?
Más información específica está por debajo.
Así que aquí es la consulta Empecé con:
<cfquery name="getObjectInfo" datasource="#BaseDS#">
SELECT groupName AS lastname, '[Group]' AS firstname
FROM groups
WHERE groups.group_id = #objectreference_id#
</cfquery>
Lo extraño aquí es que un literal está siendo "seleccionados", debido a la forma en que queremos que se muestre (de nuevo, yo no No escriba esto, solo estoy tratando de limpiarlo un poco). Así que en la función común, no es un parámetro opcional para la cláusula 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>
Aquí está el problema: Cuando paso en "GroupName AS LastName, '[Group]' AS FirstName"
para el parámetro strSelectAttributes, la consulta que se envía a la base de datos es:
SELECT GroupName AS LastName, ''[Group]'' AS FirstName
FROM Groups
WHERE Group_ID = 4
Verá, mis citas se "desinfectaron" en una consulta no válida.
Ver también http: // stackoverflow.com/questions/266586/coldfusion-adding-extra-quotes-when-constructing-database-queries-in-strings – ale