Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie führt man mehrere MySQL-Abfragen zusammen in PHP aus?

mysql_query() sendet eine eindeutige Abfrage (mehrere Abfragen werden nicht unterstützt) .Das ist das Standardverhalten. Dafür gibt es jedoch eine Umgehung.

Als Ausgabe von mysql_query() wird jedoch nur der Ergebniscode der ersten Abfrage ausgegeben wenn Sie dies tun.

Sie müssen nur Flag 65536 als fünften Parameter von mysql_connect übergeben. das Flag ist in MySQL-Client-Flags .

#define CLIENT_MULTI_STATEMENTS 65536 /* Enable/disable multi-stmt support */
#define CLIENT_MULTI_RESULTS 131072 /* Enable/disable multi-results */

Bearbeiten Sie also Ihr mysql_connect() passender Code:

mysql_connect($host, $username, $password, false, 65536);

Warnung:

  1. Sie erhalten das Ergebnis von mysql_query($query) für die erste Abfrage nur in der angegebenen $query . Sie können versuchen, 131072 zu verketten mit 65536 um mehrere Ergebnisse zu erhalten.
  2. Dies funktioniert nicht mit PHP <4.3.0
  3. Dies funktioniert nicht, wenn sql.safe_mode ist in php.ini auf 1 gesetzt

Eine andere Alternative ist die Verwendung von mysqli statt mysql Bibliothek. Es unterstützt $mysqli->multi_query() und gibt für jede Abfrage eine Ausgabe in einem Array aus.