Ho lo sfortunato compito di ripulire un po 'di vecchio codice ColdFusion. Le query sono dappertutto, sto lavorando per trasferirle tutte su comuni CFC per una manutenzione più semplice.Come sovrascrivere la sanitizzazione SQL in ColdFusion
Si è verificato un problema perché cfquery
converte automaticamente le virgolette singole in virgolette doppie. Come posso ignorare questo comportamento?
Ulteriori informazioni specifiche sono di seguito.
Così qui è la domanda ho iniziato con:
<cfquery name="getObjectInfo" datasource="#BaseDS#">
SELECT groupName AS lastname, '[Group]' AS firstname
FROM groups
WHERE groups.group_id = #objectreference_id#
</cfquery>
La cosa strana è che un letterale viene "selezionata", a causa del modo in cui vogliamo visualizzare (ancora una volta, io didn scrivilo, sto solo cercando di ripulirlo un po '). Così nella funzione comune, v'è un parametro opzionale per la clausola 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>
qui è il problema: Quando passo in "GroupName AS LastName, '[Group]' AS FirstName"
per il parametro strSelectAttributes, la query che viene inviata al database è:
SELECT GroupName AS LastName, ''[Group]'' AS FirstName
FROM Groups
WHERE Group_ID = 4
vedete, mie citazioni ha fatto "puro" in una query non valida.
Vedere anche http: // stackoverflow.it/questions/266586/coldfusion-adding-extra-quotes-when-constructing-database-queries-in-string – ale