2010-11-12 7 views
3

J'ai lu plusieurs questions sur Internet, y compris stackoverflow question mais aucun d'eux ne travaille pour moi. Voici mon code:Comment utiliser plusieurs bases de données en utilisant php?

<?php 

$conn1 = mysql_connect("localhost","root","passw0rd") or die(mysql_error()); 
$conn2 = mysql_connect("localhost","root","passw0rd") or die(mysql_error()); 

mysql_select_db("asteriskcdrdb",$conn1); 
mysql_select_db("pj8v2",$conn2); 

$query = "SELECT * FROM cdr"; 
$result = mysql_query($query,$conn1); 

var_dump($result); 

$query2 = "SELECT * FROM tb_did_avalaible"; 
$result2 = mysql_query($query2,$conn2); 

var_dump($result2); 

?> 

Lorsque je retourne le résultat, il renvoie false. Quel est le problème ici? Je vous remercie.

+1

avez-vous essayé de vérifier l'erreur avec echo mysql_error ($ conn1); ? – KeatsKelleher

+2

Avez-vous vérifié les valeurs de $ conn1 et $ conn2? Quelle est la sortie de mysql_error après chaque échec de l'appel mysql? –

+0

merci pour l'aide. Je viens de comprendre le problème. mon erreur de ne pas le réaliser plus tôt. – cyberfly

Répondre

2

Désolé je viens de comprendre le problème. Si vous utilisez même paramètre de connexion, doit ajouter vrai dans le paramètre de connexion

$conn1 = mysql_connect("localhost","root","passw0rd") or die(mysql_error()); 
$conn2 = mysql_connect("localhost","root","passw0rd",true) or die(mysql_error()); 
+0

je ne pense pas l'ouverture de la connexion 2 est nécessaire dans votre situation – malletjo

2

Ne pas utiliser le connecteur mysql, utilisez mysqli. C'est plus sécurisé comparé à mysql.

le code serait.

$conn1 = new mysqli("localhost","user","password","db1"); 
$conn2 = new mysqli("localhost","user","password","db2"); 

$query1 = "select * from table1"; 
$query2 = "select * from table2"; 

echo $query1 . "<br />"; 
echo $query2 . "<br />"; 

$rs1 = $conn1->query($query1); 
$rs2 = $conn2->query($query1); 

Vérifiez également si la requête est correcte. La plupart du temps l'erreur est dans la requête et non la syntaxe.

+0

Si vous allez recommander abandonner une option de connexion en faveur d'une autre, alors il devrait vraiment être PDO_MySql – Phil

6

Vous n'avez pas besoin de deux connexions, si les deux bases de données se trouvent sur le même serveur mysql et que vous y accédez en tant qu'utilisateur unique.

Vous n'avez pas non plus besoin de sélectionner un DB.
Il suffit d'utiliser la base de données nom préfixe lors de la spécification des tables:

<?php 

mysql_connect("localhost","root","pass") or die(mysql_error()); 

$query = "SELECT * FROM asteriskcdrdb.cdr"; 
$result = mysql_query($query)or die(mysql_error()); 
var_dump($result); 

$query2 = "SELECT * FROM pj8v2.tb_did_avalaible"; 
$result2 = mysql_query($query2)or die(mysql_error()); 
var_dump($result2); 

?> 

Le vrai problème dans votre code est: il ne peut y avoir un DB actif, il devrait fonctionner de cette façon:

<?php 

$conn1 = mysql_connect("localhost","root","passw0rd") or die(mysql_error()); 
$conn2 = mysql_connect("localhost","root","passw0rd",true) or die(mysql_error()); 

mysql_select_db("asteriskcdrdb",$conn1); 
$query = "SELECT * FROM cdr"; 
$result = mysql_query($query,$conn1); 

var_dump($result); 


mysql_select_db("pj8v2",$conn2); 
$query2 = "SELECT * FROM tb_did_avalaible"; 
$result2 = mysql_query($query2,$conn2); 

var_dump($result2); 

?> 

Bien qu'il n'y ait pas besoin de 2 connexions, vous pouvez sélectionner les deux DB utilisant la même connexion.

Questions connexes