Se connecter à 3 base de données en php
Fermé
tytyrael
-
24 oct. 2011 à 20:41
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 27 oct. 2011 à 19:03
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 27 oct. 2011 à 19:03
A voir également:
- Se connecter à 3 base de données en php
- Se connecter à ma boite hotmail - Guide
- Comment se connecter à chromecast - Guide
- Gmail se connecter - Guide
- Se connecter à un autre compte facebook - Guide
- Live.fr se connecter - Forum Mail
7 réponses
Bonjour,
http://php.net/manual/fr/function.mysql-select-db.php
Donc il faut à chaque fois que l'on veut faire une requête sur une base différente changer de base grâce à la fonction sus-nommée.
Pourquoi ne pas exporter les tables dans la même base, ça paraît si ce n'est plus cohérent plus simple.
Quel système de gestion de base de données(SGBD) requiert plusieurs bases?
http://php.net/manual/fr/function.mysql-select-db.php
Donc il faut à chaque fois que l'on veut faire une requête sur une base différente changer de base grâce à la fonction sus-nommée.
Pourquoi ne pas exporter les tables dans la même base, ça paraît si ce n'est plus cohérent plus simple.
Quel système de gestion de base de données(SGBD) requiert plusieurs bases?
Mon site est rattaché a un serveur de jeu en ligne sur lequel il m'est impossible de déplacer les bases de données , voilà pourquoi il me faut adapté mon code .
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 oct. 2011 à 11:44
25 oct. 2011 à 11:44
il faut mettre ta procedure dans une fonction et passer en argument la database lors de l'appel de cette fct
/* ****************************************************** */ /* Procédure d'appel à la base de données */ function connexion_db($db){ $error = true; $attempts = 1; while ($error && ($attempts>0)) { $connexion = mysql_connect($db_host,$db_user,$db_pass); $error = (!$connexion || mysql_errno($connexion)!=0); $attempts--; echo mysql_error(); } if ($error) { exit(); } mysql_select_db($db_table, $connexion); if (@mysql_errno($mySQLServer)!=0) { print("Erreur sur la base de données +" .mysql_error($connexion)); exit(); } return $connexion; } /* ****************************************************** */ //echo phpinfo(); function query($req,$db) {//lors de l'appel à cette fct tu lui passes $db_table 1 2 ou 3 //global $connexion; $connexion=connexion_db($db); $rub = mysql_query($req, $connexion); ......... mysql_close(); }
Pourrais tu me donnée un exemple car la je ne vois pas comment ça peu fonctionner.
Je rappel que pour moi , j'ai juste a faire un include("sql.php");
et je balance directement mes requêtes dans la page comme par exemple dans ma page compte.php
Je rappel que pour moi , j'ai juste a faire un include("sql.php");
et je balance directement mes requêtes dans la page comme par exemple dans ma page compte.php
include_once("sql.php"); $req0 = "SELECT email FROM mail WHERE email = '" . html($email) . "'"; $rub = mysql_query($req0, $connexion); $nbr = mysql_num_rows($rub);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 25/10/2011 à 22:08
Modifié par Alain_42 le 25/10/2011 à 22:08
Le fichier sql.php
ta page qui utilises db_table:
<?php /* Fichier include SQL : fonctions SQL */ /* CONSTANTES ******************************************* */ $db_host = "AAAA";//host $db_user = "BBBB";//Login SQL $db_pass = "CCCC";//Mot de passe SQL $db_table = "data1";//database $db_table2 = "data2";//database 2 $db_table3 = "data3";//database 3 $ip = "xxxx"; // localhost $port = "yyyy"; // port utiliser par le Login Server /* Procédure d'appel à la base de données */ function connexion_db($db){ global $db_host; global $db_user; global $db_pass; $error = true; $attempts = 1; while ($error && ($attempts>0)) { $connexion = mysql_connect($db_host,$db_user,$db_pass); $error = (!$connexion || mysql_errno($connexion)!=0); $attempts--; echo mysql_error(); } if ($error) { exit(); } mysql_select_db($db_table, $connexion); if (@mysql_errno($mySQLServer)!=0) { print("Erreur sur la base de données +" .mysql_error($connexion)); exit(); } return $connexion; } ?>
ta page qui utilises db_table:
<?php include_once("sql.php"); //appel fonction connexion à la db concernée $connexion = connexion_db($db_table); //pour les autres pages tu remplaces par db_table2 3 $req0 = "SELECT email FROM mail WHERE email = '" . html($email) . "'"; $rub = mysql_query($req0, $connexion); $nbr = mysql_num_rows($rub); ..... mysql_close(); ?>
le but est d'utiliser la page "sql.php" pour géré toute la connexion à la base de données et ainsi que je n'ai qu'a écrire la requête ..
Dans ta solution , on est obliger de spécifier la Base de donnée a chaque fois avant la requête .. moi j'aimerai savoir si on ne peut pas ouvrir l'accès au 3 bases de données dans cette page "sql.php" et que la requête puisse si retrouver peut importe la base de données qui est concerné.
Car avec ta solution , autant que je laisse mon code d'origine et que je mette un
la ou j'ai besoin d'accéder à ma base de données 2 et 3 .. sachant que la 1 est paramétrer par défaut dans la page "sql.php" et donc j'écris la requête directe sans préciser.
Dans ta solution , on est obliger de spécifier la Base de donnée a chaque fois avant la requête .. moi j'aimerai savoir si on ne peut pas ouvrir l'accès au 3 bases de données dans cette page "sql.php" et que la requête puisse si retrouver peut importe la base de données qui est concerné.
Car avec ta solution , autant que je laisse mon code d'origine et que je mette un
mysql_select_db("$db_table2", $connexion); mysql_select_db("$db_table3", $connexion);
la ou j'ai besoin d'accéder à ma base de données 2 et 3 .. sachant que la 1 est paramétrer par défaut dans la page "sql.php" et donc j'écris la requête directe sans préciser.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
27 oct. 2011 à 19:03
27 oct. 2011 à 19:03
je n'avait pas compris ton pb, tu veux dans un même script interroger des bases différentes.
alors une solution:
dans ton sql.php:
et dans tes requettes tu mets par exemple:
c'est à dire que tu ne sélectionnes plus ta base dans sql.php mais tu spécifie le nom de la base sous la forme nom_base.nom_table dans ta requette
alors une solution:
dans ton sql.php:
<?php /* Fichier include SQL : fonctions SQL */ /* CONSTANTES ******************************************* */ $db_host = "AAAA";//host $db_user = "BBBB";//Login SQL $db_pass = "CCCC";//Mot de passe SQL $db_table = "data1";//database $db_table2 = "data2";//database 2 $db_table3 = "data3";//database 3 $ip = "xxxx"; // localhost $port = "yyyy"; // port utiliser par le Login Server /* Procédure d'appel à la base de données */ $error = true; $attempts = 1; while ($error && ($attempts>0)) { $connexion = mysql_connect($db_host,$db_user,$db_pass); $error = (!$connexion || mysql_errno($connexion)!=0); $attempts--; echo mysql_error(); } if ($error) { exit(); } ///// tu ne selectionnes pas la base //mysql_select_db($db_table, $connexion); // if (@mysql_errno($mySQLServer)!=0) { print("Erreur sur la base de données +" .mysql_error($connexion)); exit(); } ?>
et dans tes requettes tu mets par exemple:
<?php include_once("sql.php"); $req0 = "SELECT email FROM ".$db_table.".mail WHERE email = '" . html($email) . "'"; //et la tu changes $db_table à chaque requette $rub = mysql_query($req0, $connexion); $nbr = mysql_num_rows($rub); ?>
c'est à dire que tu ne sélectionnes plus ta base dans sql.php mais tu spécifie le nom de la base sous la forme nom_base.nom_table dans ta requette