Beim Ausführen von MySQL-Abfragen, die variable Tabellennamen erfordern, können Benutzer auf Fehler wie den in der Frage gemeldeten stoßen. Ziel dieses Artikels ist es, die Verwendung vorbereiteter Anweisungen zu untersuchen und eine Lösung für dieses spezielle Problem bereitzustellen.
Der erwähnte Fehler lautete: „[Fehler] 1064 – Sie haben einen Fehler in Ihrem.“ SQL-Syntax“ weist darauf hin, dass der MySQL-Server die Abfragesyntax nicht korrekt interpretieren kann. Die Verwendung der Variablen „@table“ direkt in der Abfrageanweisung könnte der Übeltäter sein.
Vorbereitete Anweisungen bieten einen zuverlässigen Ansatz für die Verarbeitung dynamischer Abfragen mit variablen Tabellennamen. Sie ermöglichen es Ihnen, eine Abfragevorlage zu definieren und Werte später dynamisch zu ersetzen. In diesem Fall können wir eine Abfragevorlage mithilfe der CONCAT-Funktion definieren, um den Variablentabellennamen zu erstellen.
Beachten Sie die folgenden Schritte:
SET @id := '47'; SET @table := CONCAT(@id, '_2013_2014_voucher'); SET @qry1 := CONCAT('SELECT * FROM ', @table);
Dadurch wird die dynamische Abfragevorlage im eingerichtet Variable @qry1.
Als nächstes bereiten Sie die Anweisung mit dem PREPARE-Befehl vor:
PREPARE stmt FROM @qry1;
Jetzt können Sie die vorbereitete Anweisung mehrmals ausführen und dabei nach Bedarf andere Tabellennamen ersetzen:
EXECUTE stmt;
Derselbe Ansatz kann auf Löschabfragen angewendet werden. Erstellen Sie einfach eine dynamische Abfragevorlage mit CONCAT und bereiten Sie sie wie oben gezeigt vor:
SET @qry2 := CONCAT('DELETE FROM ', @table, ' WHERE id = @id');
Durch die Verwendung vorbereiteter Anweisungen mit dynamischen Tabellennamen in MySQL können Sie Abfragen mit variablen Tabellennamen effizient ausführen und elegant. Denken Sie daran, die CONCAT-Funktion für die Zeichenfolgenverkettung zu verwenden und die Leistungsfähigkeit vorbereiteter Anweisungen für eine verbesserte Abfrageflexibilität und Leistung zu nutzen.
Das obige ist der detaillierte Inhalt vonWie erstellt man dynamische Abfragen mit variablen Tabellennamen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!