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 :

query plante quand la requete est null [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut query plante quand la requete est null
    Bonjour a tous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = $bdd->query('SELECT Name_status FROM status WHERE Id_steps LIKE '.$id_step.' ORDER BY Name_status');
    $numero=4;
    while ($donnees = $req->fetch()) // compte le nombre dentrees
    {
    $numero++;
    }

    J'aurais voulu savoir l'astuce pour que quand la $req ne renvoie aucun resultat , la fonction while ne plante pas....

    c'est a dire que quand elle ne renvoie pas de resultat j'ai cette erreur :
    Fatal error: Call to a member function fetch() on a non-object in C:\wamp....

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    La requête est (syntaxiquement) invalide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $bdd->query('SELECT Name_status FROM status WHERE Id_steps LIKE '.$bdd->quote($id_step).' ORDER BY Name_status');
    Quel intérêt d'ailleurs à utiliser PDO si c'est pour introduire des injections ? Pensez aussi à mettre en place une gestion d'erreur : sans, vous faites poursuivre l'exécution de votre script avec $req qui vaut FALSE au lieu d'être un objet PDOStatement, ça va forcément partir en cacahuète ensuite sinon à la moindre erreur !

    Le must reste tout de même les requêtes préparées, ça simplifie énormément le SQL puisque les quotes n'ont plus à être gérées et permet de s'affranchir de tout risque d'injection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $req = $bdd->prepare('SELECT Name_status FROM status WHERE Id_steps LIKE :id_step ORDER BY Name_status');
    $req->bindValue('id_step', $id_step, PDO::PARAM_STR);
    if (!$req->execute()) {
        list($pdoCode, $internalCode, $msg) = $req->errorInfo();
        die(sprintf("L'exécution de la requête a échoué : %d/%d, %s", $pdoCode, $internalCode, $msg));
    }
    // la suite (fetch, etc)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 28
    Par défaut
    C'est bizarre ton code ! Généralement quand y'a aucun résultat, le while s'exécute pas du tout. Mais bon tu peux toujours tester la valeur de $req ou bien passé par une fonction PHP/SQL qui te retourne le nombre de résultats.

    Voilà

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Le problème c'est que tu utilise un objet $bdd dont on ne sait pas de quoi il s'agit ???
    Est ce PDO ?
    Est ce ta propre classe basée des fonctions mysq_*, ou mysqli_* ?

    En admettant que ce soit basé de mysql_*, il y a la fonction mysql_num_rows() qui renvoie le nombre de ligne.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    Merci pour vos reponses.
    J'ai su arranger mon compte en comptant le nombre de ligne et de la je pars avec une condition

    ca marche c'est le principal :p

    merci encore

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

Discussions similaires

  1. [2008R2] Problème de dataset quand le paramètre est Null
    Par lepotier dans le forum SSRS
    Réponses: 1
    Dernier message: 11/09/2013, 12h06
  2. plantage quand une valeur est nulle dans une requete
    Par vinze60 dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 29/04/2013, 21h55
  3. Requête SQL qui ne renvoie rien quand la valeur est nulle
    Par vocal94130 dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/09/2010, 14h11
  4. VBA: modifier case à cocher si resultat requete est null
    Par damien40 dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/04/2008, 11h46
  5. Requete de stat qui plante quand rien pour un mois
    Par Christophe P. dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/02/2007, 18h35

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