Bonsoir,
Je bloque sur les connexions multi-db, voici mon ennoncé :
la fonction qui me permet de naviguer sur mes bases de données :
Je suis connecté par ex sur la db : DB_DATABASE_ADVERTISEMENT et je veux aller chercher la ville de mon user stockée dans la db DB_DATABASE_USERS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 function db_connect($database, $link = 'db_link') { global $$link; $$link = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD); switch($database) { case(DB_DATABASE_DIRECTORY): if ($$link) mysql_select_db(DB_DATABASE_DIRECTORY); return $$link; break; case(DB_DATABASE_USERS): if ($$link) mysql_select_db(DB_DATABASE_USERS); return $$link; break; case(DB_DATABASE_ADVERTISEMENT): if ($$link) mysql_select_db(DB_DATABASE_ADVERTISEMENT); return $$link; break; } }
J'utilise cette fonction:
Une petite explication s'impose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function get_world_city($zipcode, $dbname = '') { $link_users = db_connect(DB_DATABASE_USERS, 'db_users') or die(ERROR_CONNECT_DATABASE); if($link_users) { $world_city_query = db_query("select city_name from " . TABLE_All_ZIPCODE_CITY . " where zone_code_ardment = '" . intval($zipcode) . "'"); if (db_num_rows($world_city_query)) $city = db_fetch_array($world_city_query); } if( !empty($dbname) ) db_connect($dbname) or die(ERROR_CONNECT_DATABASE); return ($city['city_name'] ? $city['city_name'] : ''); }
1) je donne en paramètre à la fonction get_world_city le nom de la db actuelle de façon à revenir sur elle après avoir récuperé la ville.
2) je crée une nouvelle ressource : $link_users que je test pour savoir si elle est disponible.
3) si oui j'exécute ma query dans la db cible
4) je reviens sur la db d'origine et je récupère ma valeur.
Théoriquement ça me parait bien mais ds la pratique la création de la nouvelle ressource échoue et je ne sais pas pourqoui.
Est-ce qu'il faut en premier fermer la db d'origine avant d'ouvrir une nouvelle ressource ?
Et pourtant il s'agit d'une connexion non pertinante et spécifiée, donc MySql devrait se comportér normalement.
Quelques idées?
Cordialement,
Partager