Se connecter à 3 base de données en php
tytyrael
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour, comment pourrais-je modifier mon code pour pouvoir faire des requêtes sur d'autre bases de données .
Mon code est dans un fichier nommé "sql.php" que j'inclue dans mon "header" , il ne me reste plus qu'à faire mes requêtes sur les pages voulu et ça marche super.
Le problème qui se pose a moi maintenant c'est que je dois utiliser 2 autres base de données et je ne sais pas trop comment adapté voir simplifier mon code.
J'ai tenter d'ajouter les lignes ci dessous pour prendre en compte mes base de données 2 et 3 :
Apparemment ce n'est pas suffisant , quelqu'un qui maitrise la chose pourrait-il m'apporter la solution ?
voici mon code qui fonctionne avec ma première base de données :
Mon code est dans un fichier nommé "sql.php" que j'inclue dans mon "header" , il ne me reste plus qu'à faire mes requêtes sur les pages voulu et ça marche super.
Le problème qui se pose a moi maintenant c'est que je dois utiliser 2 autres base de données et je ne sais pas trop comment adapté voir simplifier mon code.
J'ai tenter d'ajouter les lignes ci dessous pour prendre en compte mes base de données 2 et 3 :
mysql_select_db($db_table2, $connexion); mysql_select_db($db_table3, $connexion);
Apparemment ce n'est pas suffisant , quelqu'un qui maitrise la chose pourrait-il m'apporter la solution ?
voici mon code qui fonctionne avec ma première base de données :
<? session_start(); ?> <? /* 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 $port2 = "zzzz"; // port utiliser par le Game 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(); } mysql_select_db($db_table, $connexion); if (@mysql_errno($mySQLServer)!=0) { print("Erreur sur la base de données +" .mysql_error($connexion)); exit(); } // return $resultat; //} /* ****************************************************** */ //echo phpinfo(); function query($req) { global $connexion; $rub = mysql_query($req, $connexion); $arr = array(); $i=0; while ($cal = mysql_fetch_array($rub)) { $arr[$i] = $cal; $i++; } return $arr; } ?>
A voir également:
- Se connecter à 3 base de données en php
- Se connecter à gmail sur téléphone - Guide
- Se connecter à ma boite hotmail - Guide
- Se connecter a chromecast - Guide
- Base de registre - Guide
- Facebook se connecter à un autre compte - Guide
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 .
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
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.
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