Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie führe ich datenbankübergreifende Abfragen in PHP durch?

Patricia Arquette
Freigeben: 2024-11-10 12:42:02
Original
248 Leute haben es durchsucht

How to Perform Cross-Database Queries in PHP?

Datenbankübergreifende Abfragen in PHP: Ein umfassender Leitfaden

Dieser Artikel befasst sich mit dem Problem der Erstellung datenbankübergreifender Abfragen in PHP das wurde zuvor im Zusammenhang mit MySQL untersucht. Obwohl es dem Autor gelungen war, datenbankübergreifende Abfragen in MySQL durchzuführen, stieß er auf Fehler, als er versuchte, den Prozess in PHP zu replizieren.

Insbesondere hinterfragt der Autor die von mysql_select_db auferlegten Einschränkungen bei der Verwendung jeweils nur einer Datenbank Datenbankübergreifende Abfragen sind unpraktisch. Darüber hinaus gilt die Alternative, die Datenbank für jede Abfrage anzugeben, als mühsam.

Datenbankübergreifende Abfragen in PHP

Der Autor hat eine Lösung gefunden, die die Einschränkungen von mysql_select_db überwindet das ermöglicht direkte datenbankübergreifende Verknüpfungen:

$db = mysql_connect($host, $user, $password);
mysql_select_db('my_most_used_db', $db);

$q = mysql_query("
    SELECT *
    FROM   table_on_default_db a, `another_db`.`table_on_another_db` b
    WHERE  a.id = b.fk_id
");
Nach dem Login kopieren

In diesem Beispiel ist die in angegebene Datenbank mysql_select_db wird zur Standarddatenbank für das Skript. Die Abfrage kann jedoch Tabellen aus verschiedenen Datenbanken angeben, indem sie manuell mit dem entsprechenden Datenbanknamen auf sie verwiesen wird, wie bei another_db.table_on_another_db zu sehen ist.

Alternativer Ansatz für verschiedene Hosts

Wenn sich die Datenbanken auf verschiedenen Hosts befinden, sind direkte Verknüpfungen nicht mehr möglich. Stattdessen wird ein Ansatz mit zwei Abfragen empfohlen:

$db1 = mysql_connect($host1, $user1, $password1);
$db2 = mysql_connect($host2, $user2, $password2);

$q1 = mysql_query("
    SELECT id
    FROM   table
    WHERE  [..your criteria for db1 here..]
", $db1);

$tmp = array();
while($val = mysql_fetch_array($q1))
    $tmp[] = $val['id'];

$q2 = mysql_query("
    SELECT *
    FROM   table2
    WHERE  fk_id in (".implode(', ', $tmp).")
", $db2);
Nach dem Login kopieren

Bei dieser Methode werden zwei separate Abfragen durchgeführt: eine für jede Datenbank. Die erste Abfrage ruft die IDs von Datensätzen ab, die die Kriterien in der ersten Datenbank erfüllen. Diese IDs werden dann als Filter für die zweite Abfrage verwendet, die die entsprechenden Datensätze aus der zweiten Datenbank abruft.

Das obige ist der detaillierte Inhalt vonWie führe ich datenbankübergreifende Abfragen in PHP durch?. 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