Page 1 sur 1

mysql query can't connect to mysql

Posté : 19 nov. 2007, 22:23
par chodaboy34
Bonjour,

On m'a demandé de régler un probléme sur un site web : http://www.annonces-lucratives.com

J'ai plusieurs messages d'erreur concernant la fonction mysql_query, du type :

Code : Tout sélectionner

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home.21/a/n/n/annoncesgp/www/index.php on line 22
J'ai tenté de copier mes scripts sur un pc linux et je n'ai pas eu ces messages d'erreur.

Ma question va peut être paraître bête, mais je ne sais pas pourquoi j'ai ce probléme sur mon hébergement, avec easyphp sous Windows, mais pas sur le pc linux où je teste les fichiers... Quelqu'un peut il m'éclairer ?

Merci

Posté : 19 nov. 2007, 22:39
par Berzemus
jolie la gestion d'erreur :?

clairement un problème de connection à MySQL. Quels sont les paramètres (hormis user et password, bien entendu) de mysql_connect() ?

D'un autre côté, ce serait bon de vérifier le fichier my.ini pour voir quels accès il autorise et d'ou ils peuvent venir.

Posté : 19 nov. 2007, 23:39
par chodaboy34
Ok, c'est bien ça. Merci de ton aide.

Je manque un peu de pratique en php, mais c'est vrai que l'accés à la base de données était erroné.

Les code d'accés à la base de données sont dans un fichier bdd.php :
$nomHote = "*****";
$nomUtilisateur = "*****";
$motDePasse = "*****";
$nomBase = "*****";
La connexion se fait ici :
@mysql_connect("$nomHote","$nomUtilisateur","$motDePasse");
$base = @mysql_selectdb("$nomBase");
J'ai resaisis des valeurs correctes et ça fonctionne. Par contre, il me reste un message d'erreur mysql_num_rows :

Code : Tout sélectionner

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home.21/a/n/n/annoncesgp/www/fonctions.php on line 36
D'aprés ce que j'ai lu dans le manuel php, mysql_num_rows retourne le nombre de ligne d'un résultat. La fonction num_rows est utilisée dans mon fichier index.php :
if(mysql_num_rows($resultat))
mysql_num_rows($resultat2);
Et les variables résultat sont définies de cette maniére :
$resultat = mysql_query($sql);
$resultat2 = mysql_query($sql);
La variable $sql définie ici :

Code : Tout sélectionner

$sql = "SELECT catid,nom,couleur FROM ann_categories ORDER BY nom ASC";
Est-ce que l'erreur num_rows apparait parce que la base de données est vide ? Ou bien, dois je chercher l'origine de ce probléme ailleurs ?

Posté : 20 nov. 2007, 00:21
par choubix
bon, il et tard chez moi (ou plutot extrement tot) et je n'ai pas dormi mais: les 2 requetes ne sont pas identiques la??

par ailleurs tu n'as pas d'operateur dans ton IF: c'est normal?

genre:

if (resultat de la requete < a qq chose)
{
faire une action ici
}
else
{
faire une action la
}

Posté : 20 nov. 2007, 01:52
par Ryle
A cet endroit :
@mysql_connect("$nomHote","$nomUtilisateur","$motDePasse"); 
Tu peux virer l'arobase et les guillemets. Le premier t'empêche de voir s'il y a une erreur de connexion en masquant le message d'erreur, les secondes ne servent à rien :
mysql_connect($nomHote,$nomUtilisateur,$motDePasse); 
Ton erreur num_rows apparait parce que la variable que tu passes en argument n'est pas un résultat MySQL valide. Donc $resultat ne contient pas un résultat valide. Donc la fonction mysql_query() a généré une erreur lorsqu'elle a tenté d'exécuter la requête $sql.

Tu peux ajouter un or die() après l'exécution voir s'il n'y a pas d'erreur SQL (indépendantes de php) :
$resultat = mysql_query($sql) or die (mysql_error());
Tu peux également exécuter ton SELECT dans phpMyAdmin pour vérifier qu'il s'exécute proprement (si les noms des tables et des champs sont les bons, ...)