Ich habe die unglückliche Aufgabe, eine Reihe von alten ColdFusion-Code zu bereinigen. Überall sind Anfragen, ich arbeite daran, sie alle für eine einfachere Wartung auf gängige CFCs zu verschieben.So überschreiben SQL-Bereinigung in ColdFusion
Ich stoße auf ein Problem, weil cfquery
automatisch die einfachen Anführungszeichen in doppelte Anführungszeichen konvertiert. Wie kann ich dieses Verhalten überschreiben?
Weitere Informationen finden Sie weiter unten.
So, hier ist die Abfrage Ich begann mit:
<cfquery name="getObjectInfo" datasource="#BaseDS#">
SELECT groupName AS lastname, '[Group]' AS firstname
FROM groups
WHERE groups.group_id = #objectreference_id#
</cfquery>
Das Seltsame dabei ist, dass eine wörtliche „ausgewählt“ wird, wegen der Art, wie wir es (wieder angezeigt werden soll, ich didn schreib das nicht, ich versuche nur ein bisschen aufzuräumen). So in der gemeinsamen Funktion gibt einen optionalen Parameter für die select-Klausel ist:
<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>
Hier wird das Problem: Wenn ich in "GroupName AS LastName, '[Group]' AS FirstName"
für den strSelectAttributes Parameter übergebe, die Abfrage, die an die Datenbank gesendet wird, ist:
Sie sehen, meine Zitate wurden in eine ungültige Abfrage "bereinigt".
Siehe auch http: // stackoverflow.com/questions/266586/coldfusion-adding-extra-quotes-wenn-konstruieren-datenbankabfragen-in-strings – ale