Ausführen mehrerer Abfragen für umfassende Daten in PHP/MySQL
Beim Umgang mit komplexen Datenanalysen kann das Ausführen mehrerer Abfragen in PHP/MySQL hilfreich sein eine nahtlose Lösung. Allerdings kann die Verkettung mehrerer Abfragen und das manuelle Abrufen der Ergebnisse eine Herausforderung darstellen. In diesem Artikel wird eine Technik untersucht, die mysqli_multi_query($link, $query) verwendet, um mehrere Abfragen gleichzeitig auszuführen.
Betrachten Sie den folgenden Codeausschnitt:
$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";
Dieser Code führt eine Reihe von Abfragen aus Erstellen Sie Ansichten und wählen Sie Daten aus. Um die Ergebnisse jedoch mit mysql_fetch_array abzurufen, müssen die Abfragen als eine verkettete Abfrage ausgeführt werden.
Verwendung von mysqli_multi_query
Mit der Funktion mysqli_multi_query können Sie mehrere verkettete Abfragen ausführen in einem einzigen Arbeitsgang. Dazu müssen Sie:
Beispiel mit mysqli_multi_query:
$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"; if (mysqli_multi_query($link, $query)) { do { 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)); }
Alternative Methode: Abfragen separat ausführen
Durch die separate Ausführung von Abfragen können Sie die Ausführungsreihenfolge steuern und temporäre Tabellen verwenden. Um Abfragen separat auszuführen, können Sie Folgendes verwenden:
$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']; }
Diese Methode erfordert, dass Sie temporäre Tabellen erstellen und zusätzliche Abfragen ausführen, um Daten daraus abzurufen.
Die Wahl der richtigen Methode hängt von Ihren spezifischen Anforderungen ab Bedürfnisse. Wenn Sie eine einzelne Ergebnismenge aus mehreren Abfragen benötigen, ist mysqli_multi_query eine geeignete Option. Wenn Sie jedoch mehr Flexibilität und Kontrolle über die Ausführungsreihenfolge benötigen, ist die separate Ausführung von Abfragen möglicherweise vorzuziehen.
Das obige ist der detaillierte Inhalt vonWie führt man mehrere Abfragen in PHP/MySQL effizient aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!