Heim >Datenbank >MySQL-Tutorial >Wie führe ich datenbankübergreifende Abfragen in PHP durch?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 07:04:02498Durchsuche

How to Perform Cross Database Queries in PHP?

Datenbankübergreifende Abfragen in PHP

In einer früheren Diskussion wurden datenbankübergreifende Abfragen in MySQL behandelt. Beim Versuch, dieses Wissen in PHP umzusetzen, traten jedoch Herausforderungen auf.

Das Problem:

PHP bietet zwei Ansätze mit mysql_select_db:

  1. Die Verwendung von mysql_select_db schränkt den Zugriff auf jeweils eine einzelne Datenbank ein.
  2. Das Weglassen von mysql_select_db erfordert die Angabe der Datenbank bei jeder Abfrage, was umständlich und unpraktisch ist.

Die Lösung:

Um datenbankübergreifende Abfragen in PHP ohne übermäßige Änderungen durchzuführen, können die folgenden Schritte unternommen werden:

  1. Stellen Sie sicher, dass sich die Datenbanken auf demselben Host befinden.
  2. Stellen Sie mit mysql_select_db eine Verbindung zur bevorzugten Datenbank her.
  3. Geben Sie die fremde Datenbank manuell in der Abfrage an, wie unten gezeigt:
$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
");

Wenn sich die Datenbanken auf verschiedenen Hosts befinden , direkte Joins sind nicht möglich. In diesem Fall können stattdessen zwei Abfragen durchgeführt werden:

$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);

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!

Stellungnahme:
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