Frage

Ich versuche, Feuer Aktualisierungsabfrage mit cfquery wie unter

   <cfquery name = "UpdateRecord"   
            dataSource = #DATASOURCE#   
            username = #DBUSER#   
            password = #DBPASSWORD# 
            result="updateResult" >  
        update table1 
set field1=( select field1 from table2 where field3='Some Value')
 where field4='someothervalue'
     </cfquery> 
    <cfdump var="#UpdateResult#">

Aber, wenn ich diese Seite ausführen, wird die Seite nicht laden, in der Statusleiste ich seine Lade für lange Zeit sehen kann.

Aber wenn ich jede einfache Aktualisierungsabfrage wie

update table1 set field1='abc' where field4='someothervalue'

dann ist es gut funktioniert

Kann irgend jemand Ahnung hat, wie kann ich die Abfragen wie oben mit cfquery ausführen?

Danke

War es hilfreich?

Lösung

Haben Sie versucht, das Update innerhalb PreserveSingleQuotes Einwickeln?

 <cfquery name = "UpdateRecord"   
        dataSource = #DATASOURCE#   
        username = #DBUSER#   
        password = #DBPASSWORD# 
        result="updateResult" >  
   #PreserveSingleQuotes(update table1 set field1=( select field1 from
   table2 where Field3='Some Value') where field4='someothervalue')#
 </cfquery> 

Andere Tipps

Wenn Sie versuchen können, cfqueryparam für Ihre Werte mit und Sie werden nicht zu verwenden PreserveSingleQuotes haben. Es schützt auch vor SQL-Injection.

Sind Sie sicher, Ihre subselect Anweisung zurückgibt 1 Zeile. Es hängt davon ab, was RDMS Sie laufen lassen, aber ich bin mir ziemlich sicher, dass nicht alle Datenbanken unterstützen diese Funktion. Ich würde versuchen, die Abfrage direkt auf der Datenbank ausgeführt wird zuerst zu sehen, ob es korrekt ausgeführt wird.

Möglicherweise können Sie SQL zwingen, nur 1 Zeile zurückzugeben, indem eine Grenze 1 am Ende der Abfrage setzen, oder wenn Ihre Datenbank nicht unterstützt field1 in einem Aggregate gewickelt wird.

SELECT MAX(field1) FROM table2 WHERE field3 = 'Some Value'

. Hinweis: Wenn Sie Ihre String-Werte Parameter vom Benutzer sind, sollten Sie auf die Verwendung cfqueryparam stellen Sie sicher vor SQL-Injection zu schützen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top