IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur pour mysql_num_rows() [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Par défaut Erreur pour mysql_num_rows()
    Bonjour.

    J'ai un souci avec mysql_num_rows()
    Il me renvoi une erreur et je n'arrive pas à la comprendre.

    Voici l'erreur retournée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /mnt/146/free.fr/f/2/monsite/index2.php on line 97
    erreur de connexion
    Voici mon code php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        // requête sql pour ne pas avoir la même adresse plusieurs fois dans la table email		    
    		$sql = mysql_query("SELECT email from $db_table_email where email = '$email'");
     
    if(mysql_num_rows($sql) == 0)
    {
    		$req_email = mysql_query("INSERT INTO $db_table_email (email) VALUES ('$email')") or die ("erreur de connexion"); // requete d'insertion
    }
    Merci pour votre aide

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Par défaut
    mysql_query(...) or die(mysql_error());

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Par défaut
    Citation Envoyé par sielfried Voir le message
    mysql_query(...) or die(mysql_error());
    Pourquoi stp?
    Car c'est ce que je faisais avant mais on ma conseillé de mettre ça.

  4. #4
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    si tu es en production ne met pas de message d'erreur du tout.

    si tu es en phase de développement il est preferable d'avoir le retour de la fonction mysql_error(); elle t'aidera à cibler le problème!

    deplus je te conseille même d'afficher la requète

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tester mysql_num_rows te permet de savoir si la requête a renvoyé un résultat, en d'autres termes si il y a des enregistrements dans tabase qui correspondent à ta requête.
    Le or die() permet d'arrêter le script si ta requête n'a pas été exécutée correctement, L'ajout de mysql_error te permettant de savoir pourquoi.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Par défaut
    juste comme çà es tu sur de $db_table_email ? n'est-ce pas db_table_email ?

  7. #7
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Bonjour,

    1. Vérifie que l'ouverture de connexion à la base de données est ok

    2. Sans doute un souci pour se connecter à la table donc :

    Je te redonne ton code à ma sauce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     // requête sql pour ne pas avoir la même adresse plusieurs fois dans la table email		    
    		$sql = mysql_query('SELECT email from '.$db_table_email.' where email = "'.$email.'" ');
     
    if(mysql_num_rows($sql) == 0)
    {
    		$req_email = mysql_query('INSERT INTO '.$db_table_email.' (email) VALUES ("'.$email.'")') or die ("erreur de connexion"); // requete d'insertion
    }
    Si la table intérogée est contenu dans ta variable $db_table_email, alors effectivement il faut l'écrire comme tel : '.$db_table_email.' dans ta requête si s'en est pas une, alors simplement écrite : db_table_email

    Bon courage

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Par défaut
    Bonjour.

    Merci à tous pour vos réponses.

    Déjà pour le
    mysql_query(...) or die(mysql_error());
    ça m'a bien aidé. Au moins je sais à quoi ça sert maintenant.

    Tout d'abord, ce script marche tel quel sur un autre de mes sites.
    $db_table_email est bien une variable.

    Donc le problème vient bien de ma connexion à ma base de donnée.
    L'erreur retournée dit que la table monsite.email n'existe pas.
    Et c'est vrai cette table n'existe pas sur monsite.
    Vous allez me dire > Ben quoi alors????

    Ben en fait j'utilise la table de la base de donnée d'un autre site mais je pense que cela n'a pas d'importance temps que l'on met bien les idéntifiants de connexion.
    Et pourtant je les ai bien mis.

    Alors d'où ça peut venir?????

    Je suis chez free, ça peut venir de là?

  9. #9
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Hmmm ... Ben alors là perso, je ne saurai te dire. La seul fois ou j'ai tenté de faire une connexion à distance je n'y était pas arriver, mais ça pouvait très bien venir de moi.

    Ensuite il est problable qu'il soit impossible d'interroger une base de données à distance en fonction des hébergeurs.

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 116
    Par défaut
    C'est ce que je me dit aussi.
    Quelqu'un d'autre aurait une idée?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2005, 15h08
  2. Erreur pour la création d'un XMLService
    Par jacma dans le forum XMLRAD
    Réponses: 13
    Dernier message: 25/07/2005, 23h26
  3. [C#]Erreur pour remplir mon dataset
    Par liliprog dans le forum Windows Forms
    Réponses: 16
    Dernier message: 15/07/2005, 19h03
  4. [DOM] Erreur pour valider une DTD
    Par lenghh dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 19/05/2004, 18h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo