Heim > Backend-Entwicklung > PHP-Tutorial > Wie führe ich mehrere MySQL-Abfragen in einem einzigen PHP-Skript aus?

Wie führe ich mehrere MySQL-Abfragen in einem einzigen PHP-Skript aus?

Patricia Arquette
Freigeben: 2024-11-10 15:33:02
Original
537 Leute haben es durchsucht

How do I execute multiple MySQL queries in a single PHP script?

Ausführen mehrerer MySQL-Abfragen in PHP

Beim Arbeiten mit MySQL in PHP kann es notwendig sein, mehrere Abfragen gleichzeitig auszuführen. Dies kann zum Erstellen von Ansichten, temporären Tabellen und zum Bearbeiten von Daten in einer einzigen Transaktion nützlich sein.

Problemszenario

Bedenken Sie den folgenden Codeausschnitt:

$query1 = "CREATE VIEW current_rankings AS SELECT * FROM main_table WHERE date = X";
$query2 = "CREATE VIEW previous_rankings AS SELECT rank FROM main_table WHERE date = date_sub('X', INTERVAL 1 MONTH)";
$query3 = "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)";
$query4 = "SELECT *, @rank_change = prev_rank - current_rank AS rank_change FROM final_output";
Nach dem Login kopieren

Unser Ziel besteht darin, alle vier Abfragen in einem einzigen PHP-Skript auszuführen und dann mysql_fetch_array zu verwenden, um die Ergebnisse der vierten Abfrage abzurufen. Bei dem Versuch, dies zu tun, treten jedoch Fehler auf oder wir erhalten ein leeres Fetch-Array.

Lösung

Um mehrere Abfragen in einem einzigen PHP-Skript auszuführen, können wir mysqli_multi_query verwenden. Hier ist der aktualisierte Code:

$link = mysqli_connect("server", "user", "password", "database");

$query = "
    CREATE VIEW current_rankings AS SELECT * FROM main_table WHERE date = X;
    CREATE VIEW previous_rankings AS SELECT rank FROM main_table WHERE date = date_sub('X', INTERVAL 1 MONTH);
    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);
    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));
}
Nach dem Login kopieren

Mit mysqli_multi_query verketten wir alle vier Abfragen in einer einzigen Zeichenfolge und führen sie aus. Jeder Ergebnissatz wird dann in $result gespeichert und kann mit mysqli_fetch_array abgerufen werden.

Alternativer Ansatz

Es ist auch möglich, Abfragen separat auszuführen und Ergebnisse in temporären Tabellen zu speichern. Beispiel:

$query1 = "Create temporary table A select c1 from t1";
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'];
}
Nach dem Login kopieren

Bei diesem Ansatz erstellt die erste Abfrage eine temporäre Tabelle mit dem Namen A. Anschließend wählen wir in der zweiten Abfrage Daten aus A aus und rufen die Ergebnisse ab.

Beide Ansätze können je nach spezifischen Anforderungen und Datenbankstruktur eingesetzt werden.

Das obige ist der detaillierte Inhalt vonWie führe ich mehrere MySQL-Abfragen in einem einzigen PHP-Skript aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage