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:
- 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 mit65536
um mehrere Ergebnisse zu erhalten. - Dies funktioniert nicht mit PHP <4.3.0
- 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.