Mehrere MySQL-Abfragen mit PHP
In PHP kann die Ausführung mehrerer MySQL-Abfragen in einer einzigen Anfrage eine Herausforderung sein. Dieser Artikel befasst sich mit einer häufigen Situation, in der mehrere voneinander abhängige Abfragen für eine effiziente Verarbeitung kombiniert werden müssen.
Der ursprüngliche Ansatz bestand darin, mithilfe der bereitgestellten Abfragen einzelne Ansichten zu erstellen. Dies führte jedoch zu Fehlern oder leeren Ergebnismengen. Um dies zu beheben, bietet PHP die Funktion mysqli_multi_query() an, die die Ausführung verketteter Abfragen ermöglicht.
Hier ist ein Beispielcode-Snippet:
/* Create database connection */ $link = mysqli_connect("server", "user", "password", "database"); $query = "CREATE VIEW current_rankings AS SELECT * FROM main_table WHERE date = X;"; $query .= "CREATE VIEW previous_rankings AS SELECT rank FROM main_table WHERE date = date_sub('X', INTERVAL 1 MONTH);"; $query .= "CREATE VIEW final_output AS SELECT current_rankings.player, current_rankings.rank as current_rank LEFT JOIN previous_rankings.rank as prev_rank ON (current_rankings.player = previous_rankings.player);"; $query .= "SELECT *, @rank_change = prev_rank - current_rank as rank_change from final_output;"; /* Execute multiple queries using mysqli_multi_query() */ if (mysqli_multi_query($link, $query)) { do { /* Store current result set */ if ($result = mysqli_store_result($link)) { while ($row = mysqli_fetch_array($result)) { echo $row['player']. $row['current_rank']. $row['prev_rank']. $row['rank_change']; } mysqli_free_result($result); } } while (mysqli_next_result($link)); }
Dieser Ansatz kombiniert alle Abfragen in einer einzelne Zeichenfolge und führt sie gleichzeitig aus. Die Funktion mysqli_multi_query() gibt bei erfolgreicher Ausführung TRUE zurück.
Wenn der Ausführungsplan zusätzliche Abfragen erfordert, können diese mit Semikolons (;) als Trennzeichen an den $query-String angehängt werden. Jeder Ergebnissatz kann mit mysqli_store_result() in einer separaten Variablen gespeichert und mit mysqli_fetch_array() innerhalb einer Schleife abgerufen werden.
Alternativ können Sie Abfragen auch separat mit der Funktion mysqli_query() ausführen:
$query1 = "Create temporary table A select c1 from t1"; $result1 = mysqli_query($link, $query1) or die(mysqli_error()); $query2 = "select c1 from A"; $result2 = mysqli_query($link, $query2) or die(mysqli_error()); while($row = mysqli_fetch_array($result2)) { echo $row['c1']; }
Dieser Ansatz ermöglicht eine bessere Kontrolle über die Abfrageausführung und Ergebnisverarbeitung.
Das obige ist der detaillierte Inhalt vonWie führt man effizient mehrere MySQL-Abfragen in PHP aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!