2009-08-14 3 views
0

pour un projet J'ai besoin d'ouvrir une connexion Mysql, fermez-la et laissez le vieux code hérité courir après cela. Le code hérité possède sa propre connexion et appelle simplement mysql_query ($ sql) sans le paramètre de ressource.gérer deux connexion mysql en PHP

Comment puis-je gérer cela? Puis-je définir une connexion Mysql comme globale? Dois-je ré-exécuter l'instruction mysql_connect()? Le code existant ne peut pas être réécrit juste maintenant.

Voici une courte démo

<?php 

function show() 
{ 
    $a = mysql_fetch_array(mysql_query('select database()')); 
    echo $a[0] . "<br>"; 
} 

$conn = mysql_connect('localhost', 'root', '', TRUE); 
mysql_select_db('dredd'); 
show(); 

mysql_connect('localhost', 'root', '', TRUE); 
mysql_select_db('afup'); 
show(); 
mysql_close(); 

$a = mysql_fetch_array(mysql_query('select database()', $conn)); 
echo $a[0] . "<br>"; 

show(); 

La première sélection est ok, les deux secondes, le troisième est ok, car il a la REA, mais le quatrième a brisé ("Accès refusé pour l'utilisateur « ODBC » @ » localhost '(en utilisant le mot de passe: NO) ").

Cordialement, Cédric

Répondre

5

Si vous ne spécifiez pas la connexion, il utilisera le dernier créé un, il devrait donc être ok si vous fermez l'autre première connexion, par exemple

//open your db connection 
$conn1 = mysql_connect(); 
mysql_query($sql, $conn1); 
mysql_close($conn1); 

//open legacy code's db connection 
$conn = mysql_connect(); 
//run legacy code 

Si vous rencontrez des problèmes, il pourrait être plus facile à utiliser AOP ou mysqli pour la deuxième connexion, car alors vous savez qu'ils sont séparés certainement sans modifier le code existant.

+0

Ma connexion db est pour un système de rattrapage d'erreur, donc le code hérité est interrompu, mon code est exécuté, et le code hérité continue. Mais ton idée est très bonne, merci! Je l'essaie dès que possible. –