2010-12-13 6 views
1

Das ist also meine Frage, es wählt Daten aus drei Tabellen auf 2 verschiedenen Datenbanken:Lese ausgewählte Daten aus mehreren Datenbanken in PHP

SELECT r.id AS id, r.idAccount AS idAccount, r.name AS name, r.surname AS surname, r.company AS company, r.`date` AS date, r.callback_date AS callback_date, u.user_owner_id, c.name 
FROM D045618D.`requests_free_demos` AS r 
LEFT JOIN D045617D.`user_accounts` AS u ON r.`idAccount` = u.user_id 
LEFT JOIN D045618D.`cmsUsers` AS c ON u.`user_owner_id` = c.`id` 
WHERE c.`id` = " . $GLOBALS['cmsUser']->id 

Jetzt muss ich diese Abfrage mit PHP auszuführen. Das Problem ist, dass ich 2 Datenbanken gleichzeitig öffnen muss, weiß jemand, wie man das macht?

Ist es überhaupt möglich, oder gibt es vielleicht bessere Möglichkeiten, dies zu lösen?

Dank

+0

Dies sollte sofort funktionieren. Haben Sie es beispielsweise versucht? mit 'mysql_query()'? Welchen Fehler hast du bekommen? – rik

+0

Was meinst du damit, dass 2 Datenbanken gleichzeitig geöffnet sind? MySQL kann übergreifende Abfragen auf demselben Server unterstützen. Also meinst du mehrere "Server"? Oder mehrere Schemas? – ircmaxell

+0

Ich nehme an, Sie stellen bereits sicher, dass $ GLOBALS ['cmsUser'] -> id eine ganze Zahl ist? Wenn nicht ... – DampeS8N

Antwort

3

Nein, Sie müssen nicht zwei Datenbanken öffnen. Tun Sie einfach die mysql_connect und führen Sie die Abfrage von mysql_query. Es wird gut funktionieren.

Solange (1) alle Tabellennamen vollständig mit dem Datenbanknamen referenziert sind, (2) Beide Datenbanken auf demselben Server sind und (3) der Benutzer Zugriff auf beide DBs hat, müssen Sie nicht tun mysql_select_db darauf. Alle solche Abfragen werden gut funktionieren.

+0

danke, einfache Lösung – Ruben

0

Kein Problem, wenn sie auf dem gleichen Server, und Sie haben die richtigen Berechtigungen, und Du Präfix jeden Tabellennamen mit den korrekten Datenbanknamen (die Sie tun) Sie können dies nur füttern Eine MySQL-Verbindung. Keine Notwendigkeit, 2 Datenbanken zu öffnen; Sie öffnen nur eine Verbindung zum Server.

1

Sind beide Datenbanken auf demselben Server? Wie schon andere sagten, sollte man dann kein Problem haben. Wenn sich die beiden Datenbanken auf zwei verschiedenen Servern befinden, ist die einzige Lösung, die ich mir vorstellen kann, das Erstellen von Verbundtabellen auf einem Server, um auf den anderen zuzugreifen.

http://dev.mysql.com/doc/refman/5.1/en/federated-storage-engine.html

Um es einfach: Federated Tabellen können Sie Remote-Tabellen als lokale Tabellen fädeln.

Verwandte Themen