J'essaie de me connecter à 2 bases de données sur la même instance de MySQL à partir d'un script 1 PHP.
Pour le moment, la seule façon dont j'ai compris est de se connecter aux deux bases de données avec un utilisateur différent pour chacune.
J'utilise ceci dans un script de migration où je récupère des données de la base de données d'origine et les insère dans la nouvelle, de sorte que je parcours des listes de résultats volumineuses.
La connexion à 1 base de données, puis la tentative d'établissement d'une seconde connexion avec le même utilisateur modifient simplement la base de données actuelle.
D'autres idées?
Vous aurez besoin de passer un true booléen comme quatrième argument optionnel à mysql_connect (). Voir la documentation de PHP mysql_connect () pour plus d'informations.
Si votre utilisateur de base de données a accès aux deux bases de données et qu'elles se trouvent sur le même serveur, vous pouvez utiliser une seule connexion et spécifier simplement la base de données que vous souhaitez utiliser avant le nom de la table. Exemple:
SELECT column
FROM database.table
En fonction de ce que vous devez faire, vous pourrez peut-être faire un INSERT INTO
et économiser beaucoup de temps de traitement.
INSERT INTO database1.table (column)
SELECT database2.table.column
FROM database2.table
Lucas a raison. Je suppose que les deux bases de données sont hébergées sur le même hôte.
Vous pouvez également créer une seule connexion à une base de données et continuer à permuter les bases de données selon les besoins. Voici un pseudo-code.
$db_conn = connect_db(Host, user, pwd);
mysql_select_db('existing_db', $db_conn);
-- do selects and scrub data --
mysql_select_db('new_db', $db_conn);
-- insert the required data --
Je suggère d'utiliser deux gestionnaires de connexion
$old = mysql_connect('old.database.com', 'user', 'pass);
mysql_select_db('old_db', $old);
$new = mysql_connect('new.database.com','user','pass);
mysql_select_db('new_db', $new)
// run select query on $old
// run matching insert query on $new
Si c'est une option, utilisez PDO: vous pouvez avoir autant de connexions de base de données ouvertes que vous le souhaitez.
De plus, en supposant que vous exécutiez les mêmes requêtes à plusieurs reprises, vous pouvez utiliser des instructions préparées.
Vous pouvez facilement utiliser 2 bases de données en même temps avec les codes suivants:
<?php
define('Host', "YOURHOSTNAME");
define('USER', "YOURHOSTNAME");
define('PASS', "YOURHOSTNAME");
define('DATABASE1', "NAMEOFDATABASE1");
define('DATABASE2', "NAMEOFDATABASE2");
$DATABASE1 = mysqli_connect(Host, USER, PASS, DATABASE1);
$DATABASE2 = mysqli_connect(Host, USER, PASS, DATABASE2);
if(!$DATABASE1){
die("DATABASE1 CONNECTION ERROR: ".mysqli_connect_error());
}
if(!$DATABASE2){
die("DATABASE2 CONNECTION ERROR: ".mysqli_connect_error());
}
$sql = "SELECT * FROM TABLE"; /* You can use your own query */
$DATABASE1_QUERY = mysqli_query($DATABASE1, $sql);
$DATABASE2_QUERY = mysqli_query($DATABASE2, $sql);
$DATABASE1_RESULT = mysqli_fetch_assoc($DATABASE1_QUERY);
$DATABASE2_RESULT = mysqli_fetch_assoc($DATABASE2_QUERY);
/* SHOW YOUR RESULT HERE WHICH DATABASE YOU WANT FROM */
echo $DATABASE1_RESULT['id'];
echo $DATABASE2_RESULT['id'];
/*After complete your all work don't forgot about close database connections*/
mysqli_close($DATABASE1);
mysqli_close($DATABASE2);
?>