Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2006, 10h16   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2005
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 26
Points : 11
Points : 11
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?
heyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 12h29   #2
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
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 ...
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h36   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2005
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 26
Points : 11
Points : 11
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!
heyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h50   #4
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Rajoute la constante __LINE__ dans tes die()... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h58   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2005
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 26
Points : 11
Points : 11
Vous en avez d'autres comme ca?
Y a pas un tuto des astuces magiques dans PHP?
Merci
heyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h03   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2005
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 26
Points : 11
Points : 11
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.
heyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h32   #7
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
die() affiche ce que tu lui transmet en paramètre... donc pourquoi te compliquer le vie... .. ?

Code :
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... .. .
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 16h17   #8
Candidat au titre de Membre du Club
 
Inscription : avril 2005
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 26
Points : 11
Points : 11
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 .
heyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 16h53   #9
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
debug_backtrace()

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

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2006, 09h52   #10
Candidat au titre de Membre du Club
 
Inscription : avril 2005
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 26
Points : 11
Points : 11
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]
heyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2006, 11h45   #11
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
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°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h14.


 
 
 
 
Partenaires

Hébergement Web