2011-04-13 1 views
-1

J'ai un script très volumineux et non structuré.Créer une connexion DB temporaire sans perdre la connexion par défaut d'origine

À un certain point dans le script, une connexion DB est établie.

Quelque temps après ce point, j'ai besoin de faire une nouvelle connexion à un autre DB, exécuter une requête, puis déconnecter. Après avoir fait cela, j'ai besoin de tous les appels mysql_query() suivants pour utiliser le lien DB d'origine. Je sais que je peux capturer l'identifiant de lien du premier mysql_connect(), et l'utiliser dans tous les appels mysql_query() pertinents, mais je ne veux pas modifier plus de code que je dois. Je cherche à faire quelque chose comme ceci:

//... loads of code ... 

mysql_connect("original connection"); 
mysql_query(...); // don't want to modify these lines 

//... loads more code ... 

$link = get_current_mysql_link_identifier(); // imaginary function 
$new_link = mysql_connect("my new connection"); 
mysql_query(...); // uses new connection 
mysql_close($new_link); 
reinstate_old_link($link); // imaginary function 

//... loads more code ... 

mysql_query(...) // line remains unchanged. uses original DB link 

Sans ces fonctions imaginaires, une fois que la seconde connexion est fermée, mysql_query() ne fait pas défaut à la connexion d'origine; il continue d'essayer et d'utiliser la connexion plus récente et fermée.

+0

Je pense, ** mais ** je pourrais bien être ** mal ** qu'une fois la deuxième connexion fermée, les fonctions 'mysql_' * fonctionneront sur la prochaine connexion disponible, qui dans ce cas serait la première connexion . – Treffynnon

+0

Pas une solution élégante, mais pourquoi vous ne vous reconnectez pas à la première base de données une fois que vous avez terminé avec vos requêtes de base de données secondaires? – Raisen

+0

@Treffynnon J'ai fait quelques tests, et il semble que ça ne retombe pas sur la question d'origine après le mysql_close() – aidan

Répondre

1

mysql_connect() renvoie une référence à la connexion, que vous pouvez ensuite fournir sur d'autres instructions pour indiquer la connexion à utiliser. Je crois que vous devez également spécifier l'argument new_link pour créer une nouvelle connexion.

+0

Salut Jim. Je cite ma question initiale: "Je sais que je peux capturer l'identifiant de lien du premier mysql_connect(), et l'utiliser dans tous les appels mysql_query(), mais je ne veux pas modifier plus de code que je dois". Il semble que ce que je veux réaliser n'est pas possible. – aidan

Questions connexes