In einem früheren Artikel haben wir die Konstruktion datenbankübergreifender Abfragen in MySQL untersucht. Während dieser Ansatz in MySQL effektiv funktionierte, erwies sich seine direkte Anwendung in PHP als schwierig. Insbesondere die Verwendung von mysql_select_db in PHP bringt Einschränkungen mit sich, wenn versucht wird, auf mehrere Datenbanken zuzugreifen.
Die beiden primären Optionen, die bei der Verwendung von mysql_select_db in PHP verfügbar sind sind:
Keine dieser Optionen entspricht dem Ziel, datenbankübergreifende Abfragen ohne mühsame Änderungen am vorhandenen Code durchzuführen.
Um dieses Problem zu beheben, Ihre Datenbanken müssen sich auf demselben Host befinden. Dadurch können Sie manuell eine Fremddatenbank angeben und gleichzeitig eine Verbindung zu Ihrer bevorzugten Standarddatenbank aufrechterhalten.
$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 Ihre Datenbanken auf unterschiedlichen Hosts liegen, direkte Joins sind nicht möglich. In diesem Szenario können Sie separate Abfragen an einen bestimmten Host ausführen:
$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 kann ich datenbankübergreifende Abfragen in PHP mit mehreren Datenbanken auf demselben Host durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!