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 :

Fatal error: Uncaught exception 'MySQLExeption' [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Par défaut Fatal error: Uncaught exception 'MySQLExeption'
    Bonjour à tous,

    je réalise un site internet en php. J'ai créé un formulaire pour ajouter des actualités. Lorsque j’exécute la requête insert j'ai un gros message d'erreur du genre :

    Fatal error: Uncaught exception 'MySQLExeption' with message 'Erreur de requête SQL!!!' in C:\wamp\www\la sequence doc\class\class_cnx.php:80 Stack trace: #0 C:\wamp\www\la sequence doc\site\admin\form_actu.php(42): Mysql->RequeteSQL('INSERT INTO art...') #1 {main} thrown in C:\wamp\www\la sequence doc\class\class_cnx.php on line 80

    Voici ma requete sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	 $ReqUpdateActu = $Mysql->RequeteSQL('UPDATE actualites SET titre="'.$_POST['titre'].'",date="'.$_POST['date'].'",idArticles="'.$_POST['idArt'].'" WHERE idActu='.$idActu);
    Quand je fais un echo de ma requete et que je l'execute dans mysql ça fonctionne très bien. Je ne vois pas c'est quoi le problème.

    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Normalement, un "uncaught exception" veut dire qu'il faut la clause try...catch, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
    $ReqUpdateActu = $Mysql->RequeteSQL('UPDATE actualites SET titre="'.$_POST['titre'].'",date="'.$_POST['date'].'",idArticles="'.$_POST['idArt'].'" WHERE idActu='.$idActu);
    }
    catch($error)
    {
    echo $error;
    }
    Maintenant, ceci ne résoudra pas ton problème puisqu'une erreur s'est produite. Est-ce que tu as essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ReqUpdateActu = mysql_query('UPDATE actualites SET titre="'.$_POST['titre'].'",date="'.$_POST['date'].'",idArticles="'.$_POST['idArt'].'" WHERE idActu='.$idActu) or die (mysql_error());
    Si ça continue de planter avec ça, il serait intéressant de voir la requête résultante de toute cette concaténation pour voir plus précisément où se trouve l'erreur, donc faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo 'UPDATE actualites SET titre="'.$_POST['titre'].'",date="'.$_POST['date'].'",idArticles="'.$_POST['idArt'].'" WHERE idActu='.$idActu;
     
    $ReqUpdateActu = $Mysql->RequeteSQL('UPDATE actualites SET titre="'.$_POST['titre'].'",date="'.$_POST['date'].'",idArticles="'.$_POST['idArt'].'" WHERE idActu='.$idActu);
    Et nous envoyer le résultat du "echo" pour qu'on puisse diagnostiquer le tout . Bonne chance.

    Osu

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Par défaut
    J'ai déjà fait un echo de la requête et quand je l'exécute dans mysql ça fait bien l'ajout dans la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO articles(corps,chapo) VALUES("dfgfdg","gdfgdfgfd")
    L'exécution des autres requêtes fonctionnent

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO articles(corps,chapo) VALUES("dfgfdg","gdfgdfgfd")
    est une requête INSERT alors que dans le code donné, tu construis une requête UPDATE. J'imagine que ce n'est probablement pas ça le problème, mais la requête que j'aimerais voir c'est la requête UPDATE que tu construits, pas la requête INSERT puisque c'est UPDATE qui plante .

    Osu

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Par défaut
    Non non c'est bien un INSERT qui plante. Je me suis trompé en vous donnant le code tout à l'heure, j'ai mis le UPDATE au lieu du INSERT.
    DSL

  6. #6
    Membre expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Ahhhh je crois que j'ai compris ce qui se passe, c'est que PHP échappe les guillemets de votre chaîne de caractères, donc la requête transmise au serveur est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO articles(corps,chapo) VALUES(dfgfdg,gdfgdfgfd)
    Pour éviter ce petit désagrément, simplement précéder vos guillemets d'une barre oblique inversée (\) comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO articles(corps,chapo) VALUES(\"dfgfdg\",\"gdfgdfgfd\")
    Et si ça continue de planter, voir le code de la requête INSERT serait d'une grande utilité . Au plaisir

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Par défaut
    ça ne fonctionne toujours pas

    Voici le code de la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	$ReqInsertArt=$Mysql->RequeteSQL('INSERT INTO articles(corps,chapo) VALUES(\"'.$_POST['chapo'].'\",\"'.$_POST['corps'].'\")');
    Merci d'avance pour votre aide

  8. #8
    Membre expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Je crois que le problème vient du fait qu'il croit que les apostrophes utilisés pour les variable $_POST terminent votre chaîne, essayez de les remplacer par des guillemets à la place et laissez tomber les \, ils ne servent que quand on débute une string avec les guillemets, mais vous avez utilisé des apostrophes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ReqInsertArt=$Mysql->RequeteSQL('INSERT INTO articles(corps,chapo) VALUES("'.$_POST["chapo"].'","'.$_POST["corps"].'")');

  9. #9
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Par défaut
    J'ai fait la modification que tu m'as dit et ça ne fonctionne toujours pas. J'ai toujours ce message d'erreur :
    Fatal error: Uncaught exception 'MySQLExeption' with message 'Erreur de requête SQL!!!' in C:\wamp\www\la sequence doc\class\class_cnx.php:80 Stack trace: #0 C:\wamp\www\la sequence doc\site\admin\form_actu.php(42): Mysql->RequeteSQL('INSERT INTO art...') #1 {main} thrown in C:\wamp\www\la sequence doc\class\class_cnx.php on line 80

  10. #10
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Par défaut
    J'ai essayé de mettre en dur, dans ma requete, des valeurs a la place des variables pour voir j'avais toujours l'affichage du message d'erreur. J'ai faot comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $ReqInsertArt=$Mysql->RequeteSQL('INSERT INTO articles(corps,chapo) VALUES("lkjlkj","kjhjkhkjkj")');
    Et j'ai toujours le message d'erreur qui s'affiche.


  11. #11
    Membre expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Est-ce que vous avez essayé de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query('INSERT INTO articles(corps,chapo) VALUES("lkjlkj","kjhjkhkjkj")') or die(mysql_error());
    Si ça passe comme ça, on va savoir que le problème vient de "$Mysql->RequeteSQL" et non de la requête elle-même. Par ailleurs, je serais curieux d'avoir le code de cette fameuse méthode "RequeteSQL", est-il disponible?

  12. #12
    Membre confirmé Avatar de LeGnome12
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 98
    Par défaut Direct dans la Base
    Bonjour,
    As-tu tenté d'exécuter ta requête directement dans la base de donnée ?
    Je m'explique, tu ouvres ton éditeur de base de données favoris, (mysql admin par exemple) et tu exécutes ta requête de base.

    Tu auras certainement un message plus explicite.

  13. #13
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Par défaut
    Oui oui je l'ai déjà fait... J'ai trouvé l'erreur. Une erreur toute bête j'avais deux bases de données nommée pareil.

    Merci pour vos réponses

  14. #14
    Membre expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Ah ben oui, c'est souvent les erreurs les plus bêtes qui nous prennent le plus de temps à trouver. Content de voir que tu as trouvé la réponse à ta question .

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

Discussions similaires

  1. Fatal error: Uncaught exception 'PDOException'
    Par mina13 dans le forum Zend_Db
    Réponses: 2
    Dernier message: 09/06/2011, 09h24
  2. [MySQL] Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
    Par -Fly- dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/04/2011, 11h18
  3. Réponses: 3
    Dernier message: 04/04/2011, 17h32
  4. [Smarty] Fatal error: Uncaught exception 'SmartyException'
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 20/11/2010, 11h24
  5. Réponses: 1
    Dernier message: 16/02/2009, 14h00

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