Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum 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 02/12/2010, 14h53   #1
Débutant
 
Inscription : juin 2006
Messages : 502
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 502
Points : 44
Points : 44
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 :
Citation:

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 :
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.
mademoizel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 15h25   #2
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
Normalement, un "uncaught exception" veut dire qu'il faut la clause try...catch, comme ceci:

Code :
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 :
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 :
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
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 16h29   #3
Débutant
 
Inscription : juin 2006
Messages : 502
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 502
Points : 44
Points : 44
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 :
1
2
 
INSERT INTO articles(corps,chapo) VALUES("dfgfdg","gdfgdfgfd")
L'exécution des autres requêtes fonctionnent
mademoizel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 16h54   #4
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
Cette requête:

Code :
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
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 17h07   #5
Débutant
 
Inscription : juin 2006
Messages : 502
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 502
Points : 44
Points : 44
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
mademoizel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 17h35   #6
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
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 :
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 :
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
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 17h48   #7
Débutant
 
Inscription : juin 2006
Messages : 502
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 502
Points : 44
Points : 44
ça ne fonctionne toujours pas

Voici le code de la requête

Code :
1
2
 
	$ReqInsertArt=$Mysql->RequeteSQL('INSERT INTO articles(corps,chapo) VALUES(\"'.$_POST['chapo'].'\",\"'.$_POST['corps'].'\")');
Merci d'avance pour votre aide
mademoizel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 18h04   #8
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
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 :
$ReqInsertArt=$Mysql->RequeteSQL('INSERT INTO articles(corps,chapo) VALUES("'.$_POST["chapo"].'","'.$_POST["corps"].'")');
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 18h15   #9
Débutant
 
Inscription : juin 2006
Messages : 502
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 502
Points : 44
Points : 44
J'ai fait la modification que tu m'as dit et ça ne fonctionne toujours pas. J'ai toujours ce message d'erreur :
Citation:
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
mademoizel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 18h20   #10
Débutant
 
Inscription : juin 2006
Messages : 502
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 502
Points : 44
Points : 44
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 :
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.

mademoizel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 19h02   #11
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
Est-ce que vous avez essayé de faire:

Code :
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?
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 17h41   #12
Membre du Club
 
Avatar de LeGnome12
 
Développeur Web
Inscription : mai 2008
Messages : 78
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2008
Messages : 78
Points : 61
Points : 61
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.
LeGnome12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 21h02   #13
Débutant
 
Inscription : juin 2006
Messages : 502
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 502
Points : 44
Points : 44
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
mademoizel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 01h34   #14
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
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 .
osuwariboy 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 12h05.


 
 
 
 
Partenaires

Hébergement Web