2012-04-12 11 views
6

Ich habe einen MySQLvariablemysql query in variable

@query = CONCAT('INSERT INTO history VALUES (',1,',',50,',UTC_TIMESTAMP()'); 

Ich möchte führen Sie die Insert-Anweisung in der Variablen auszuführen.

+0

versuchen Sie vorbereitete Anweisung –

+0

Bitte geben Sie mir Beispiel – Avinash

+0

siehe meine Antwort, ich denke, es wird funktionieren –

Antwort

12

Sie müssen zunächst die Anweisung mit PREPARE vorbereiten und dann EXECUTE

verwenden Siehe hier: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

Etwas wie:

SET @query = CONCAT("INSERT INTO history VALUES (",1,",",50,",UTC_TIMESTAMP()"); 

PREPARE stmt1 FROM @query; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
+0

Ich habe diesen Fehler # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von "EXECUTE stmt_name" in Zeile 2 entspricht – Avinash

+0

Versuchen Sie meine Bearbeitung, sollte in Ordnung sein. – mattytommo

+0

Danke @mattytommo. – Avinash

2
Set @query = CONCAT("INSERT INTO history VALUES (",1,",",50,",UTC_TIMESTAMP()"); 

und dann

PREPARE stmt_name FROM @query 

und zuletzt

EXECUTE stmt_name 
-2

entfernen Sie die CONCAT(), ist es nicht etwas zu tun, einen Fehler außer zu erzeugen, da es sonst einen String mit nichts zu verketten versucht.

+0

Es ist eigentlich concentrationing 5 Elemente, es wird kein Fehler => Ihre Antwort ist schlecht -> Antworten Sie nicht bereits beantwortete Fragen - schauen Sie sich die "neue" Abschnitt und zeigen Sie Ihre Fähigkeiten :) – Toumash

+0

unlogische Antwort. –