Si les deux bases sont sur le même serveur il n'y a pas de raison que tu ne puisses pas requêter les deux bases. Tu peux même le faire dans la même requête ! Voir mes exemples plus haut.
Version imprimable
Oui je m'en suis inspiré pour faire mes requêtes. Mais elles sont sur le même serveur, chacune a sa variable. Je fais une requête sur la 2e : ça passe, j'en fais une autre sur la première, ça plante (avec le format base.table).
Quel est le texte de la requête qui plante et quel est le message d'erreur ?
Fichier de connexion :
Fichier des fonctions :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php $dbHost = "127.0.0.1"; $dbName1 = "mabase1"; $dbName2 = "mabase2"; $dbUser = "root"; $dbPassword = ""; //echo '<p>BDD 1 : ' . $dbName1 . '</p>'; //echo '<p>BDD 2 : ' . $dbName2 . '</p>'; $ConnexionBdd = mysql_connect($dbHost, $dbUser, $dbPassword) or die (mysql_error()); $SelectionBdd1 = mysql_select_db($dbName1, $ConnexionBdd) or die (mysql_error()); $SelectionBdd2 = mysql_select_db($dbName2, $ConnexionBdd) or die (mysql_error()); ?>
Pas de problème avec SelectApp(). Mais SelectUser() renvoie l'erreur Table '$dbName2.users' doesn't exist. Si dans la requête je remplace $dbName1 par sa valeur (ce qui donne FROM `mabase1`.`users` ) ça passe. J'utilise la même syntaxe pour toutes les fonctions, et seule la fonction sur la 1e base plante.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <? function SelectApp($id) { $query = " SELECT COUNT(`app_id`) FROM $dbName2.apps WHERE `appId` = '$id' "; $result = mysql_query($query) or die (mysql_error()); $app = mysql_fetch_row($result); return $app[0]; } function SelectUser($id) { $rqt_users = " SELECT * FROM $dbName1.users WHERE `user_id` = '$id' "; $rst_users = mysql_query($rqt_users) or die (mysql_error()); $resultat = mysql_fetch_row($rst_users); return $resultat[0]; } echo SelectApp('2'); echo SelectUser('3'); ?>
Edit : j'ai essayé FROM `$mabase1`.users (avec les ` `), cela renvoie Incorrect database name '' (vide).
Salut,
peux-tu mettre ces deux lignes en commentaire et refaire le test:
?>Code:
1
2 //$SelectionBdd1 = mysql_select_db($dbName1, $ConnexionBdd) or die (mysql_error()); //$SelectionBdd2 = mysql_select_db($dbName2, $ConnexionBdd) or die (mysql_error());
Normalement, si tu forces l'utilisation de la base de données (select * from base1.champ) dans ta requête, tu ne devrais pas avoir besoin du mysql_select_db() dans ton code php.
J'obtiens alors "No database selected".
Ajoute la connexion dans le mysql_query :
Code:$rst_users = mysql_query($rqt_users, $ConnexionBdd)
Bonjour,
Tu dois passer en paramètre $dbName2 à ta fonction «SelectApp»
Et tu dois passer en paramètre $dbName1 à ta fonction «SelectUser»
Ces deux variables ne sont pas défini dans les fonctions respectives qui les utilisent...
CinePhil : j'obtiens "Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource". Mais tu pensais peut-être au nom de la base comme l'a dit Sim et pas à la fonction de connexion ? ;)
Sim : tu as vu juste ! J'ai passé le nom de ma base à chaque fonction (même pour celles qui n'avaient pas d'erreur), et désormais toutes fonctionnent !
Un grand merci à tous pour votre aide ! :D
:king: