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 :

Différence mysql_error/mysql_num_rows(au niveau de l'utilisation)


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Points : 49
    Points
    49
    Par défaut Différence mysql_error/mysql_num_rows(au niveau de l'utilisation)
    Bonjour j'aimerai savoir quelle est la différence entre utiliser mysql_error comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result=mysql_query($query) or die("Erreur SQL".mysql_error());
    et utiliser un mysql_num_rows($result) pour tester si notre requête a obtenu au moins une ligne(un résultat) et effectuer ensuite ce que l'on veut faire !

    Dans les 2 cas on fait la même chose non car on teste si notre requete est valable?

    Alors faut-il privilégier une méthode ou faire les 2?

    J'ai du mal a voir la nuance !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    mysql_error() t'affiche l'erreur, ce qui est utile pour débugger (ne surtout pas laisser les "or die" sur un site en prod' accessible au public, par contre).

    mysql_num_rows n'indique absolument pas si une requête a échoué : il se peut qu'elle se soit déroulée normalement mais qu'elle ne retourne aucun résultat.

  3. #3
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Pour ma part, il y a aucune comparaison a faire entre les 2 techniques, elles ont toutes 2 un but précis, qui n'est pas le même (même si en apparence ça y ressemble).

    Le or die( mysql_error() ) c'est fait pour débugger, c'est pour aider le développeur à réparer une erreur.
    D'ailleurs, on n'affiche pas les erreurs (Php ou MySQL) pour un site en production, uniquement lorsqu'on développe.
    Le développeur devra donc tout faire pour éviter d'avoir cette erreur, ce code est donc là pour du dernier recourt, au cas improbable où le développeur n'aurait pas vérifié.
    Du coup, et en production, l'utilisateur ne verra pas l'erreur si elle se présente.


    Faire une 1ère requête de vérification pour éviter qu'une 2ème requête génère une erreur est très courant, je dirais même que ça fait partie prenante de toute application.
    Si on regarde bien, une énorme partie du code est faite de vérifications, des tonnes de vérifs même qui n'ont pour but d'éviter des erreurs par la suite.
    Après, à chacun sa manière de gérer le cas où on détecte une erreur, sans compter que ça dépend de la nature de l'erreur.
    - Soit on estime que cette erreur est ingérable, du coup, on retourne un message d'erreur (opération impossible, désolé).
    - Soit on fait autrement, et au bout on parvient à faire se qui était prévu.


    Après, on peu faire une gestion des erreurs plus poussée, comme des try / catch, et même des procédures stockées au niveau de la Bdd, etc ..., et s'appuyer dessus.
    Disons qu'ici c'est un tout autre niveau de programmation, je m'y attarderais pas.

Discussions similaires

  1. [Toutes versions] Récupération variables de niveau classeur en utilisant ADODB
    Par desaivresa dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/01/2015, 14h37
  2. Réponses: 3
    Dernier message: 15/04/2014, 09h17
  3. Réponses: 2
    Dernier message: 03/11/2009, 19h40
  4. Différence entre ingénieur et niveau I ?
    Par grenoult dans le forum Etudes
    Réponses: 16
    Dernier message: 16/04/2008, 13h46
  5. Architecture d'un serveur multijoueurs niveau emmission avec utilisation thread
    Par goof_22 dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 22/04/2006, 15h26

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