sql >> Databáze >  >> RDS >> Mysql

Jak se připojíte k více databázím MySQL na jedné webové stránce?

Upozornění: mysql_xx funkce jsou od php 5.5 zastaralé a od php 7.0 odstraněny (viz http://php.net/ manual/intro.mysql.php ), použijte mysqli_xx funkce nebo viz odpověď níže od @Troelskn

Můžete provést více volání mysql_connect() , ale pokud jsou parametry stejné, musíte předat hodnotu true pro '$new_link ' (čtvrtý) parametr, jinak se znovu použije stejné připojení. Například:

$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

Poté pro dotaz na databázi 1 předejte první identifikátor odkazu:

mysql_query('select * from tablename', $dbh1);

a pro databázi 2 předejte druhou:

mysql_query('select * from tablename', $dbh2);

Pokud nezadáte identifikátor odkazu, použije se poslední vytvořené připojení (v tomto případě to, které představuje $dbh2 ) např.:

mysql_query('select * from tablename');

Další možnosti

Pokud má uživatel MySQL přístup k oběma databázím a jsou na stejném hostiteli (tj. obě DB jsou přístupné ze stejného připojení), můžete:

  • Jedno připojení nechte otevřené a zavolejte mysql_select_db() podle potřeby mezi nimi přepínat. Nejsem si jistý, že se jedná o čisté řešení a mohli byste skončit dotazem na nesprávnou databázi.
  • Při odkazování na tabulky v dotazech zadejte název databáze (např. SELECT * FROM database2.tablename ). To bude pravděpodobně obtížné implementovat.

Přečtěte si prosím také odpověď troelskna, protože to je lepší přístup, pokud jste schopni používat PDO spíše než starší rozšíření.



  1. Heroku Rails 4 se nemohl připojit k serveru:připojení bylo odmítnuto

  2. SQLite MAX

  3. Android:NullPointerException Nelze načíst databázi do listview v rámci fragmentu

  4. Vytvoření Oracle Sequence Trigger