Problem:
Kann man programmgesteuert auf ein MySQL-Feld über den in einem gespeicherten Namen zugreifen? String-Variable, insbesondere zum dynamischen Aktualisieren von Feldwerten?
Beispielanwendungsfall:
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
Antwort:
Die Die Möglichkeit, dynamisch über Variablen auf MySQL-Felder zuzugreifen, hängt vom Kontext ab.
Externe Variablen:
Wenn der Feldname als Variable in einer externen Anwendung gespeichert wird (z. B. PHP) ist das Erstellen einer gültigen MySQL-Anweisung möglich.
Interne Variablen:
Wenn der Feldname jedoch als Wert in einer MySQL-Tabelle gespeichert ist, ist der Zugriff darauf möglich Die Verwendung der Standard-SQL-Syntax ist nicht möglich. Dies liegt daran, dass MySQL keine Auswertungsfunktion (eval) hat.
Technik vorbereiteter Anweisungen:
Um dieses Problem zu umgehen, kann man vorbereitete Anweisungen verwenden, obwohl dies der Fall ist Wird als Hacky-Lösung angesehen. So kann es implementiert werden:
SELECT columnname from queries into @colname; SET @table = 'mytable'; SET @s = CONCAT('SELECT ',@colname,' FROM ', @table); PREPARE stmt FROM @s; EXECUTE stmt;
Bei dieser Technik wird der Spaltenname einer Tabelle in einer Benutzervariablen (@colname) gespeichert, eine dynamische SQL-Anweisung verkettet, die Anweisung vorbereitet und ausgeführt.
Das obige ist der detaillierte Inhalt vonKann mit String-Variablen dynamisch auf MySQL-Felder zugegriffen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!