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 ");
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);
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!