par
zeus » 09 mai 2008, 16:27
Ton soucis m'a interpellé et j'ai testé de mon côté.
Il s'avère que si tu fait un mysql_close(), mysql_query() ne sélectionne plus implicitement la connexion à utiliser, et c'est la raison pour laquelle ta seconde requête échoue.
Par contre, si tu donnes explicitement la ressource mysql, la requête fonctionne.
Exemple (note bien où est-ce que j'utilise $o_db):
$o_db = mysql_pconnect('127.0.0.1', 'root', '');
mysql_select_db('dotclear');
$req2 = "SELECT * FROM dc_categorie";
$res2 = mysql_query($req2, $o_db);
echo "Nombre d'enregistrements trouvés : ".mysql_num_rows($res);
mysql_close();
$req2 = "SELECT * FROM toto";
$res2 = mysql_query($req, $o_db);
echo "Nombre d'enregistrements trouvés : ".mysql_num_rows($res2);
Affiche bien
Nombre d'enregistrements trouvés : 2
Nombre d'enregistrements trouvés : 2
La réponse à la seconde question est identique : pour fermer une connexion persistance, il faut utiliser mysql_close(), mais sur une connexion explicite
Exemple (regarde bien le $o_db dans le mysql_close()) :
$o_db = mysql_pconnect('127.0.0.1', 'root', '');
mysql_select_db('dotclear');
$req = "SELECT * FROM dc_categorie";
$res = mysql_query($req, $o_db);
echo "Nombre d'enregistrements trouvés : ".mysql_num_rows($res);
mysql_close($o_db);
$req2 = "SELECT * FROM toto";
$res2 = mysql_query($req, $o_db);
echo "Nombre d'enregistrements trouvés : ".mysql_num_rows($res2);
Et ce code là echoue sur la seconde requête en affichant un message d'erreur.
Ton soucis m'a interpellé et j'ai testé de mon côté.
Il s'avère que si tu fait un mysql_close(), mysql_query() ne sélectionne plus implicitement la connexion à utiliser, et c'est la raison pour laquelle ta seconde requête échoue.
Par contre, si tu donnes explicitement la ressource mysql, la requête fonctionne.
Exemple (note bien où est-ce que j'utilise $o_db):
[php]$o_db = mysql_pconnect('127.0.0.1', 'root', '');
mysql_select_db('dotclear');
$req2 = "SELECT * FROM dc_categorie";
$res2 = mysql_query($req2, $o_db);
echo "Nombre d'enregistrements trouvés : ".mysql_num_rows($res);
mysql_close();
$req2 = "SELECT * FROM toto";
$res2 = mysql_query($req, $o_db);
echo "Nombre d'enregistrements trouvés : ".mysql_num_rows($res2); [/php]
Affiche bien
[quote]Nombre d'enregistrements trouvés : 2
Nombre d'enregistrements trouvés : 2[/quote]
La réponse à la seconde question est identique : pour fermer une connexion persistance, il faut utiliser mysql_close(), mais sur une connexion explicite
Exemple (regarde bien le $o_db dans le mysql_close()) :
[php]$o_db = mysql_pconnect('127.0.0.1', 'root', '');
mysql_select_db('dotclear');
$req = "SELECT * FROM dc_categorie";
$res = mysql_query($req, $o_db);
echo "Nombre d'enregistrements trouvés : ".mysql_num_rows($res);
mysql_close($o_db);
$req2 = "SELECT * FROM toto";
$res2 = mysql_query($req, $o_db);
echo "Nombre d'enregistrements trouvés : ".mysql_num_rows($res2); [/php]
Et ce code là echoue sur la seconde requête en affichant un message d'erreur.