2009-11-17 3 views
1

Je travaille sur un projet qui nécessite de travailler avec plusieurs connexions de base de données. D'après ce que j'ai lu, je devrais pouvoir passer entre les connexions dans la requête elle-même, quelque chose comme:Travailler avec plusieurs bases de données dans php/mysql

mysql_query("SELECT * FROM user_types", $db_core)or die(mysql_error()); 

Mais je reçois l'erreur:

Table 'db_company.user_types' doesn't exist 

Je peux donc voir se penche sur le db incorrect, il saisit le dernier

Je ne voudrais pas avoir à re-sélectionner la base de données à chaque fois, mais si c'est le meilleur moyen d'y aller, je peux.

Je les bases de données sélectionnées comme ceci:

<? 
$currentpage = $_SERVER["REQUEST_URI"]; 
//Core DB 
$db_core_host = "localhost"; 
$db_core_username = "root"; 
$db_core_password = ""; 
$db_core_name = "db_main"; 
// 
$db_core = mysql_connect($db_core_host,$db_core_username,$db_core_password); 
mysql_select_db($db_core_name, $db_core)or die(mysql_error()); 
//Company DB 
$db_company_host = $company['db_server']; 
$db_company_username = $company['db_username']; 
$db_company_password = $company['db_password']; 
$db_company_name = $company['db_name']; 
// 
$db_company = mysql_connect($db_company_host,$db_company_username,$db_company_password); 
mysql_select_db($db_company_name, $db_company)or die(mysql_error()); 
?> 

Je ne sais pas si ça aide du tout, mais quand je fais l'écho ou l'autre des connexions de base de données je reçois Resource id # 5

Répondre

4

Utilisez le db.table syntaxe dans la requête:

mysql_query("SELECT * FROM databas_ename.table_name", $db_core) or die(mysql_error()); 
+0

Cela fonctionne, est-ce que je rencontrerais un problème si les bases de données sont sur des serveurs différents et partagent le même nom? – kilrizzy

+0

Non, ils devraient être sur le même serveur. Si la base de données est sur un autre serveur, vous devez créer une autre connexion en utilisant mysql_connect. –

+0

Génial. Merci! – kilrizzy

1

le code que vous avez dans votre question devrait fonctionner, sauf lorsque les deux bases de données sont sur le même serveur. Jetez un oeil au $new_link paramètre de mysql_connect (voir docs here): si vous l'appelez deux fois avec le même serveur/utilisateur/passe, la connexion sera réutilisée - ce qui vous fait vous retrouver avec l'appel mysql_select_db sur une connexion influencer la un autre. Par conséquent, si vous avez deux serveurs différents ou que vous définissez $new_link sur true, votre code devrait fonctionner.

+0

CECI est la bonne réponse ... +1 – James

Questions connexes