Beim Erstellen komplexer Abfragen ist es häufig erforderlich, Tabellennamen dynamisch anzugeben. Allerdings kann die Verwendung der Rohtextverkettung zu Syntaxfehlern und Schwachstellen führen. In diesem Artikel wird ein alternativer Ansatz unter Verwendung vorbereiteter Anweisungen untersucht und eine schrittweise Lösung für den spezifischen Fehler bereitgestellt, auf den Sie gestoßen sind.
Fehler aufgetreten
Der Fehler [ Err] 1064 – Sie haben einen Fehler in Ihrer SQL-Syntax... tritt auf, weil MySQL Tabellennamen, die mithilfe der Rohtextverkettung erstellt wurden, nicht direkt auswerten kann.
Die Lösung: Vorbereitete Anweisungen
Vorbereitete Anweisungen ermöglichen es Ihnen, Abfragen dynamisch zu erstellen und auszuführen und gleichzeitig sicherzustellen, dass die SQL-Syntax gültig bleibt. So können Sie damit Ihren Fehler beheben:
Dynamischen Tabellennamen definieren:
SET @id := '47'; SET @table := concat(@id, '_2013_2014_voucher');
Abfragezeichenfolge erstellen:
SET @qry1 := concat('select * from ', @table);
Anweisung vorbereiten:
prepare stmt from @qry1;
Anweisung ausführen:
execute stmt;
Für Löschabfrage wiederholen:
SET @qry2 := concat('DELETE FROM ', @table, ' WHERE>
Durch Verwendung von vorbereitet -Anweisungen können Sie dynamische Tabellennamen effektiv verarbeiten und Syntaxfehler im Zusammenhang mit der Verkettung von Rohtext beseitigen. Dieser Ansatz entspricht den Best Practices der Datenbank und erhöht die Codesicherheit.
Das obige ist der detaillierte Inhalt vonWie kann man Tabellennamen in SQL-Anweisungen dynamisch angeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!