Das Ausführen von Zeichenfolgen als dynamische Abfragen kann eine nützliche Technik bei der Datenbankprogrammierung sein. In MySQL ist diese Funktionalität nicht über direkte Methoden wie EXEC oder EXECUTE verfügbar. Es gibt jedoch eine Problemumgehung mit den Anweisungen PREPARE und EXECUTE.
Um einen String als Abfrage in MySQL auszuführen, können Sie die folgenden Schritte verwenden:
PREPARE stmt FROM 'INSERT INTO table_name (column1, column2) VALUES (?, ?)';
SET @value1 = 'value1'; SET @value2 = 'value2';
EXECUTE stmt USING @value1, @value2;
DEALLOCATE PREPARE stmt;
Beispiel:
Das folgende Beispiel zeigt, wie eine Abfrage dynamisch ausgeführt wird, um mehrere Zeilen einzufügen in eine Tabelle:
SET @queryString = ( SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM ( SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM ( SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9 ) as qwe ) as www ); PREPARE stmt FROM @queryString; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @asd = NULL;
Dieses Beispiel fragt die Datenbank nach einer Liste von Benutzer-IDs und Gruppen-IDs ab und erstellt eine dynamische Abfragezeichenfolge um diese Werte in die Tabelle user_group einzufügen und dann die dynamische Abfrage auszuführen.
Das obige ist der detaillierte Inhalt vonWie kann ich dynamische Abfragen in MySQL mit PREPARE und EXECUTE ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!