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

SQL Procédural MySQL Discussion :

Erreur php ou erreur mysql


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 23
    Points
    23
    Par défaut Erreur php ou erreur mysql
    Voila mon problème est que j'ai un script qui s'execute et affiche un warning (ici c'est le moteur php qui me la montre : genre Warning : mysql_fetch_row : argument blabla ligne 459)
    Pour affiner mon debug sur cette requete je decide d'executer un or die(mysql_error) a toutes les requetes de la page ou cela est utile.
    En faisant j'ai une réponse de mysql_error mais le premier Warning n'est plus affiché!
    Est ce normal?

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Oui, c'est normal, car tu as une erreur MySQL et comme tu utilises la fonction die() qui interdit au reste de la page de s'afficher/exécuter ...

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Ouaouhh super!
    Euh par contre n'y aurait t-il pas un moyen de savoir a quel endroit c'est produit l'erreur. Parce que ce n'est plus indiqué du coup quand on a pas mal de die() lequel c'est enclenché??
    Merci!

  4. #4
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Rajoute la constante __LINE__ dans tes die()... .. .

    @ tchaOo°

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Vous en avez d'autres comme ca?
    Y a pas un tuto des astuces magiques dans PHP?
    Merci

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Au fait comment faire pour écrire une telle ligne du genre:
    mysql_query() or die (mysql_error(); echo(_LINE_)
    Je sais die() est uen fonction mais je vois pas la solution.

  7. #7
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    die() affiche ce que tu lui transmet en paramètre... donc pourquoi te compliquer le vie... .. ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    die('SQL error in '.basename(__FILE__).' on line '._LINE_.' : '.mysql_error());
    
    @ tchaOo°

    ps : pour les truc maqgiques... pas de secrets... la doc PHP est ton amie... .. .

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Tiens j'ai une derniere:
    Ma requete mysql_query est stockée dans un fichier annexe (elle porte un autre nom), c'est comme ca que le code est fait, il faut donc que je l'appelle à chaque fois que je veux faire un mysql_query().
    Imaginons qu'elle s'appelle requete_sql() : a chaque fois que je l'appelle elle va chercher sa définition dans ce fameux fichier annexe.
    Ainsi donc l'erreur se produit toujours au meme endroit dans le fichier inclus, à une certaine ligne.
    En fait la solution serait de remonter l'erreur dans le code à l'instruction précédente.
    Avec un truc du genre (__FILE__ - 1)." ".(__LINE__ - 1).
    S'il existe d'autres solutions tell me, c'est hyper interressant .

  9. #9
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    debug_backtrace()

    Après à toi de filtrer les données que tu veux dans le context de débogage qui t'es retourné... .. .

    @ tchaOo°

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    J'ai un peu de mal avec cette fonction, je comprend pas la différence entre les constantes magiques (__LINE__ __FILE__ ...) et les outputs de cette fonction. Ce que j'aimerais c'est retourner à l'instruction (la ligne plus précisément) qui précède mon erreur et qui malheureusement ce trouve sur un autre fichier que celui où s'est produit l'erreur.
    Merci de m'aiguiller

    [EDIT]
    En fait la fonction me retourne l'erreur précedente : l'erreur retourné est situé au niveau d'un Dans ce cas la il me faudrait la ligne qui s'est déroulée 2 instructions avant! Ou comment retrouver l'instruction qui a fait appel à cet include.
    Pour résumé mon problème :
    [code]
    requete_sql(); // fonction (c'est cette ligne qui provoque une erreur!)
    include(); // va chercher "requete_sql()" dans un fichier externe
    mysql_query() // execute enfin l'instruction SQL

    Comment retrouvé la premiere ligne?
    [/EDIT]

  11. #11
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Si ta fonction génère une erreur au niveau de php elle s'affichera... sinon à toi de générer des erreur quand il y a un problème... avec debug_backtrace() ou debug_print_backtrace() si tu es sous php5 tu peux voir le context de debogage c'est à dire ce qui s'est passé pendant l'execution du scrit (fonctions, includes, etc)... .. .

    @ tchaOo°

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

Discussions similaires

  1. rpm Mysql-PHP installation erreur
    Par tania13 dans le forum Installation
    Réponses: 1
    Dernier message: 27/03/2009, 19h15
  2. [MySQL] Erreur PHP MySQL
    Par lv3895 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2008, 15h16
  3. [MySQL] Erreur PHP ne peut charger l'extension mysql
    Par cyberfred1073 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/03/2007, 00h27
  4. erreur php mysql
    Par taka10 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/08/2006, 10h41
  5. Erreur PHP et MySQL
    Par rane dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/05/2006, 19h24

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