Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment se connecter à plusieurs bases de données MySQL sur une seule page Web ?

Attention : mysql_xx les fonctions sont obsolètes depuis php 5.5 et supprimées depuis php 7.0 (voir http://php.net/ manuel/intro.mysql.php ), utilisez mysqli_xx fonctions ou voir la réponse ci-dessous de @Troelskn

Vous pouvez faire plusieurs appels à mysql_connect() , mais si les paramètres sont les mêmes, vous devez passer true pour le '$new_link ' (quatrième) paramètre, sinon la même connexion est réutilisée. Par exemple :

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

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

Ensuite pour interroger la base de données 1 passez le premier identifiant de lien :

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

et pour la base de données 2 passez la seconde :

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

Si vous ne passez pas d'identifiant de lien alors la dernière connexion créée est utilisée (en l'occurrence celle représentée par $dbh2 ) ex :

mysql_query('select * from tablename');

Autres options

Si l'utilisateur MySQL a accès aux deux bases de données et qu'elles se trouvent sur le même hôte (c'est-à-dire que les deux bases de données sont accessibles depuis la même connexion), vous pouvez :

  • Gardez une connexion ouverte et appelez mysql_select_db() pour permuter entre si nécessaire. Je ne suis pas sûr que ce soit une solution propre et vous pourriez finir par interroger la mauvaise base de données.
  • Spécifiez le nom de la base de données lorsque vous référencez des tables dans vos requêtes (par exemple, SELECT * FROM database2.tablename ). Cela risque d'être pénible à mettre en œuvre.

Veuillez également lire la réponse de troelskn, car il s'agit d'une meilleure approche si vous pouvez utiliser PDO plutôt que les anciennes extensions.