Warnung: mysql_xx
Funktionen sind seit PHP 5.5 veraltet und seit PHP 7.0 entfernt (siehe http://php.net/manual/intro.mysql.php ). Verwenden Sie mysqli_xx
Funktionen oder lesen Sie die Antwort unten von @Troelskn
Sie können mehrere Aufrufe durchführen mysql_connect()
, aber wenn die Parameter identisch sind, müssen Sie true für den $new_link
Parameter ' ' (vierter) übergeben, andernfalls wird dieselbe Verbindung wiederverwendet. Beispielsweise:
$dbh1 = mysql_connect($hostname, $username, $password);
$dbh2 = mysql_connect($hostname, $username, $password, true);
mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);
Um die Datenbank 1 abzufragen, übergeben Sie die erste Link-ID:
mysql_query('select * from tablename', $dbh1);
und für Datenbank 2 übergeben Sie die zweite:
mysql_query('select * from tablename', $dbh2);
Wenn Sie keine Link-ID übergeben, wird die zuletzt erstellte Verbindung verwendet (in diesem Fall die durch $dbh2
), z.
mysql_query('select * from tablename');
Andere Optionen
Wenn der MySQL-Benutzer Zugriff auf beide Datenbanken hat und sich auf demselben Host befindet (dh auf beide DBs kann über dieselbe Verbindung zugegriffen werden), können Sie:
- Lassen Sie eine Verbindung offen und rufen Sie
mysql_select_db()
an, um bei Bedarf zwischen ihnen zu wechseln. Ich bin nicht sicher, ob dies eine saubere Lösung ist, und Sie könnten am Ende die falsche Datenbank abfragen.
- Geben Sie den Datenbanknamen an, wenn Sie auf Tabellen in Ihren Abfragen verweisen (z
SELECT * FROM database2.tablename
. B. ). Dies ist wahrscheinlich ein Problem bei der Implementierung.
Lesen Sie auch die Antwort von troelskn, da dies ein besserer Ansatz ist, wenn Sie PDO anstelle der älteren Erweiterungen verwenden können.
$dbh2
den zweiten nur bei Bedarf hinzuzufügen ? Alle Abfragen für diesen Arbeitsansatz ändern zu müssen, würde wahrscheinlich Tage dauern, nur alle zu finden ...db_query($query,$db='db1')
und dann alle Ihre alten Abfragen massenweise aktualisieren,db_query($query)
gefolgt von einer benutzerdefinierten Aktualisierung Ihrer nicht standardmäßigen Abfragen aufdb_query($query,'db2')
If the link identifier is not specified, the last link opened by mysql_connect() is assumed.
Wenn Sie PHP5 verwenden (und Sie sollten dies tun, da PHP4 veraltet ist), sollten Sie PDO verwenden , da dies langsam zum neuen Standard wird. Ein (sehr) wichtiger Vorteil von PDO ist, dass es gebundene Parameter unterstützt, was für viel sichereren Code sorgt.
Sie würden eine Verbindung über PDO herstellen, wie folgt:
(Natürlich ersetzen Sie den Datenbanknamen, den Benutzernamen und das Passwort oben)
Sie können die Datenbank dann folgendermaßen abfragen:
Oder wenn Sie Variablen haben:
Wenn mehrere Verbindungen gleichzeitig geöffnet sein müssen, können Sie einfach mehrere Instanzen von PDO erstellen:
quelle
use DATABASENAME
, aber ich verstehe den Punkt nicht?Ich habe mein Leben einfach gemacht:
hoffe es ist hilfreich ... Prost ...
quelle
Verwenden Sie anstelle von mysql_connect mysqli_connect .
mysqli bietet eine Funktion zum gleichzeitigen Verbinden mehrerer Datenbanken.
quelle
mysql_connect
Versuchen Sie den folgenden Code:
Sie können Daten der obigen Abfrage wie folgt aus beiden Datenbanken abrufen
quelle
mysql_select_db
auch nur einmal anzurufen - auch zweimal anzurufen, ohne dass irgendetwas anderes in der Mitte ist, ist nutzlosDies ist die naheliegendste Lösung, die ich verwende. Denken Sie jedoch daran, dass diese Lösung immer die erste Verbindung verwendet, wenn der Benutzername / das Kennwort für beide Datenbanken auf demselben Host genau gleich ist. Seien Sie also nicht verwirrt, dass dies in einem solchen Fall nicht funktioniert. Was Sie tun müssen, ist, 2 verschiedene Benutzer für die 2 Datenbanken zu erstellen, und es wird funktionieren.
quelle
Beachten Sie Folgendes, es sei denn, Sie müssen wirklich mehr als eine Instanz eines PDO-Objekts im Spiel haben:
Beachten Sie das Fehlen von
dbname=
Argumenten in der Konstruktion.Wenn Sie über ein Terminal oder ein anderes Tool eine Verbindung zu MySQL herstellen, wird der Datenbankname nicht sofort benötigt. Sie können zwischen Datenbanken wechseln, indem Sie die
USE dbname
Anweisung über diePDO::exec()
Methode verwenden.Natürlich möchten Sie dies möglicherweise in eine catch try-Anweisung einschließen.
quelle
Möglicherweise können Sie die MySQLi-Syntax verwenden, um besser damit umgehen zu können.
Definieren Sie die Datenbankverbindungen. Geben Sie dann die richtige Verbindung an, wenn Sie eine der Datenbanken abfragen möchten.
Z.B:
Verwenden Sie dann Folgendes, um sie auf derselben Seite abzufragen:
Ein Wechsel zu MySQLi auf diese Weise hilft Ihnen.
quelle
Das brauchst du eigentlich nicht
select_db
. Sie können eine Abfrage gleichzeitig an zwei Datenbanken senden. Geben Sie zunächst einen ZuschussDB1
zur AuswahlDB2
durchGRANT select ON DB2.* TO DB1@localhost;
. DannFLUSH PRIVILEGES;
. Schließlich können Sie 'Abfragen mit mehreren Datenbanken' wieSELECT DB1.TABLE1.id, DB2.TABLE1.username FROM DB1,DB2
usw. durchführen. (Vergessen Sie nicht, dass Sie 'root'-Zugriff benötigen, um den Befehl grant zu verwenden.)quelle
Wenn Sie mysqli verwenden und zwei db_connection-Dateien haben. wie der erste ist
zweite ist
Ändern Sie einfach den Namen des Parameterübergangs in mysqli wie DB1 und DB2. Wenn Sie denselben Parameter in mysqli übergeben, nehmen wir an, dass DB1 in beiden Dateien vorhanden ist, stellt die zweite Datenbank keine Verbindung mehr her. Denken Sie also daran, wenn Sie zwei oder mehr Verbindungen verwenden, übergeben Sie unterschiedliche Parameternamen in der mysqli-Funktion
quelle
quelle