Forum Clubic

Probleme mysql_connect, wamp

Bonjour, ma page index.php ne se charge pas lorsque que j’ajoute la ligne

mysql_connect(‘localhost’,‘root’,’’);

il me dit Connexion réinitialisée, si je met mysql_connect(hdfghjdf’,‘root’,’’); la page se charge mais évidemment avec les erreur de connexion qui vont avec, mais la page se charge alors que si je met localhost ça plante complètement. :s quelqu’un aurait une idée ?

j’ai wampserveur 2.0, j’ai accès au panneau phpmyadmin, j’ai créée des tables etc

As-tu essayé

mysql_connect('127.0.0.1','root','');

?

Quand tu dis que ça plante, ça fait quoi ? Erreur 500 ou … ?

j’ai réinstaller wamp, toujours pareil, oui j’ai essayer 127.0.0.1, et lerreur, j’ai ca :

http://img69.imageshack.us/img69/821/sanstitretm.jpg

Essaye de regarder les logs Apache et PHP, puisque c’est de ça qu’il retourne.

Sinon, tu devrais tenter mysqli_connect() et ne plus utiliser les fonctions de la famille mysql_* mais mysqli_*

le log de php est vide, appache me met ca :

[Thu Nov 19 22:50:46 2009] [error] [client 127.0.0.1] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\htdocs\index.php on line 78, referer: localhost…
[Thu Nov 19 22:50:48 2009] [notice] Parent: child process exited with status 255 – Restarting.
[Thu Nov 19 22:50:48 2009] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured – resuming normal operations
[Thu Nov 19 22:50:48 2009] [notice] Server built: Dec 10 2008 00:10:06
[Thu Nov 19 22:50:48 2009] [notice] Parent: Created child process 860
[Thu Nov 19 22:50:48 2009] [notice] Child 860: Child process is running
[Thu Nov 19 22:50:48 2009] [notice] Child 860: Acquired the start mutex.
[Thu Nov 19 22:50:48 2009] [notice] Child 860: Starting 64 worker threads.
[Thu Nov 19 22:50:48 2009] [notice] Child 860: Starting thread to listen on port 80.
[Thu Nov 19 22:50:49 2009] [error] [client 127.0.0.1] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\htdocs\index.php on line 78, referer: localhost…
[Thu Nov 19 22:50:49 2009] [notice] Parent: child process exited with status 255 – Restarting.
[Thu Nov 19 22:50:49 2009] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured – resuming normal operations
[Thu Nov 19 22:50:49 2009] [notice] Server built: Dec 10 2008 00:10:06
[Thu Nov 19 22:50:49 2009] [notice] Parent: Created child process 1852
[Thu Nov 19 22:50:49 2009] [notice] Child 1852: Child process is running
[Thu Nov 19 22:50:49 2009] [notice] Child 1852: Acquired the start mutex.
[Thu Nov 19 22:50:49 2009] [notice] Child 1852: Starting 64 worker threads.
[Thu Nov 19 22:50:49 2009] [notice] Child 1852: Starting thread to listen on port 80.

donc apparament ce serai pas du au mysql_connect() mais a un mysql fetch array plus loin… ^^ je regarde ca et je vous dit quoi

EDIT : alors, voici le code ligne 78 :


<?php
        $prod=mysql_query("SELECT * FROM Produit ORDER BY val_promo DESC LIMIT 0,5");
	$ok=true;
	while($prod1=mysql_fetch_array($prod))
	{
		echo"<div ";
		if ($ok){echo"id=\"glisse1\" "; $ok=false;}
		echo"class=\"glisse\"><h1>".$prod1["ref_prod"]."</h1><p>".$prod1["desc_prod"]."</p><a href=\"".RACINE."Afficher/produit.php?".$prod1["ref_prod"]."\"><img src=\"".$prod1["image"]."\" alt=\"voir ce produit\"/></a></div>";
	}
?>

sur un serveur sur le net, ce même code fonctionne, mais c’est pour les cours et le prof vas tester en local.
donc la je pense que le while fait une boucle infinie. mais pourquoi ?! :s

EDIT 2 : ce n’est pas une boucle infinie, j’ai rajouter un compteur de passage dans la boucle en rajoutant compteur<6 en condition d’entrée de boucle, mais ca ne marche toujours pas

pour mysqli_* , je connais pas, ca change quoi au juste ??
Edité le 19/11/2009 à 23:10

Disons que ton erreur, c’est surtout une erreur genre tu as killé la thread PHP chargé d’envoyer tes pages. Un simple problème de connexion au serveur ne fait pas ça.

Tu n’as pas une boucle infinie, du moins je ne pense pas - même si l’erreur est symptomatique - :slight_smile:

En revanche, ton code est “faux”, ça devrait être :

<?php
  if (false === ($prod=mysql_query("SELECT * FROM Produit ORDER BY val_promo DESC LIMIT 0,5"))) {
    exit('problème requête mysql_query() : ' . mysql_error());
  }
	$ok=true;
	while(false !== ($prod1=mysql_fetch_array($prod)))
	{
		echo"<div ";
		if ($ok){echo"id=\"glisse1\" "; $ok=false;}
		echo"class=\"glisse\"><h1>".$prod1["ref_prod"]."</h1><p>".$prod1["desc_prod"]."</p><a href=\"".RACINE."Afficher/produit.php?".$prod1["ref_prod"]."\"><img src=\"".$prod1["image"]."\" alt=\"voir ce produit\"/></a></div>";
	}
?>

La subtile nuance c’est que si ta requête plante, tu le sauras.

ah ben merci ^^ j’essaye ça tout de suite :slight_smile:


alors quand je met

while(($prod1=mysql_fetch_array($prod)) != false), ben ca ne marche toujours pas (!== je pense que c’était une faute de frappe non ?)

et toujours avec la ligne 78 (au cas ou il y aurait deux erreurs)

Tu ne dois pas mettre : le != ou !==.

while($prod1 = mysql_fetch_array($prod))
{
}

Devrait suffire. Du moins cela suffit pour moi.

php.net…

Bien sûr que c’est inutile, c’était juste pour être cohérent avec le reste.

ok ben c’est ce que j’avais à la base et ca ne marche pas, de plus le code marchait sur un serveur, et meme les pages autre que index.php ne fonctionnent pas si je met su mysql :s

je viens de tester la console MySQL et tout fonctionne niquel…


quand je fais :

if(mysql_connect('localhost','root',''))
{
	echo "ok";
}
else
{
  //reste de la page
}

ca affiche bien ok, donc on a bien accès a la base de donnée.

quand je met la boucle while en commentaire ca bug quand meme
et le log d’appache contient ca :

[Fri Nov 20 12:48:55 2009] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Fri Nov 20 12:48:55 2009] [notice] Server built: Dec 10 2008 00:10:06
[Fri Nov 20 12:48:55 2009] [notice] Parent: Created child process 3424
[Fri Nov 20 12:48:55 2009] [notice] Child 3424: Child process is running
[Fri Nov 20 12:48:55 2009] [notice] Child 3424: Acquired the start mutex.
[Fri Nov 20 12:48:55 2009] [notice] Child 3424: Starting 64 worker threads.
[Fri Nov 20 12:48:55 2009] [notice] Child 3424: Starting thread to listen on port 80.
[Fri Nov 20 12:49:03 2009] [notice] Parent: child process exited with status 255 -- Restarting.
[Fri Nov 20 12:49:03 2009] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Fri Nov 20 12:49:03 2009] [notice] Server built: Dec 10 2008 00:10:06
[Fri Nov 20 12:49:03 2009] [notice] Parent: Created child process 1504
[Fri Nov 20 12:49:03 2009] [notice] Child 1504: Child process is running
[Fri Nov 20 12:49:03 2009] [notice] Child 1504: Acquired the start mutex.
[Fri Nov 20 12:49:03 2009] [notice] Child 1504: Starting 64 worker threads.
[Fri Nov 20 12:49:03 2009] [notice] Child 1504: Starting thread to listen on port 80.

bon en enlevant des parties de codes une à une, j’en arrive à la conclusion que ca marche pas quand il y a la ligne :

include("includes/footer.php");

et le footer contient :

			</div>
			<div id="footer">
			</div>
		</div>
	</body>
</html>
<?php mysql_close();?>

ben c’est le mysql_close, je l’ai remis ailleurs replantage :s


"L'utilisation de mysql_close n'est pas habituellement nécessaire, puisque les connexions non persistantes ouverts sont automatiquement fermées à la fin l'exécution du script." donc au pire j'en met pas et voila ^^

Ca m’intéresse aussi car j’avais le meme probleme. On m’avait dit mauvaise installation de apache alors que j’avais suivi tout comme il faut

ben moi c’est wamp qui l’a fait donc voila :s

je pense parce que c’est appache qui ferme automatiquement la connexion mysql et qu’on lui dit de le faire en même temps sinon ej sais pas, mais j’en met pas moi comme ca je suis tranquille puisqu’il le fait tout seul à la fin du script