PHP & Mysql : impossible de récupérer les erreurs [Résolu] |
Bienvenue invité ( Connexion | Inscription )
PHP & Mysql : impossible de récupérer les erreurs [Résolu] |
28 May 2014, 04:33
Message
#1
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 629 Inscrit : 21 Dec 2007 Membre no 103 074 |
Bonjour,
J'ai ce code : Code $Req = "insert into t_patients_medecins (IdMedecin, IdPatient, Commentaire, Date_Deb, Date_Fin) values (" . $IdMedecin . ", " . $IdPatient . ", '" . $_POST['Commentaire'] . "'"; if ($_POST['Date_Deb'] != "") $Req = $Req . ", '" . ConvertDateSQL($_POST['Date_Deb']) . "'"; else $Req = $Req . ", Null"; if ($_POST['Date_Fin'] != "") $Req = $Req . ", '" . ConvertDateSQL($_POST['Date_Fin']) . "'"; else $Req = $Req . ", Null"; $Req = $Req . ")"; echo "<br>Requête = " . $Req; try { $count = $bdd->exec($Req); } catch (PDOException $e) { echo "<h4><br>La requête d'insertion est : ".$Req; print "<br><strong>Erreur : " . $e->getMessage() . "</strong></h4>"; die(); } à l'exécution, il y a une erreur de duplicate key. Mais le traitement ne s'arrête pas. Pourquoi ? Qu'ai-je donc oublié ? Version de Mysql : 5.6.15 Version de PHP : 5.5.8 Merci pour votre aide Eddoul Ce message a été modifié par Eddoul - 2 Jun 2014, 19:42. -------------------- Machines en ma possession :
- Imac 20", 4,3Ghz, HDD 250, 4Go RAM |
|
|
28 May 2014, 08:16
Message
#2
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 969 Inscrit : 26 Jan 2011 Lieu : Pollachius virens Membre no 164 083 |
Qu'est ce que tu veux dire par "le traitement ne s'arrête pas" ?
Pourquoi tu utilises echo sur une ligne et print sur la suivante ? -------------------- MBP 2017 15" avec clavier pourri et touchbar inutile
|
|
|
28 May 2014, 10:58
Message
#3
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 516 Inscrit : 7 Oct 2001 Membre no 962 |
Tu as oublié le plus important : nous dire quel API tu utilises pour accéder à MySQL depuis PHP.
A la vue de ton code, je dirai PDO. Par défaut, PDO ne génère pas d'exception lors d'une erreur à l'exécution des requêtes. C'est pourquoi, le try/catch ne fonctionne pas. Pour activer le mode "exception", il faut faire un : Code $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); juste après le new PDO(…); |
|
|
2 Jun 2014, 15:07
Message
#4
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 531 Inscrit : 30 Jan 2014 Membre no 189 144 |
Fais gaffe, ton code est sensible aux injections SQL :
Code $Req = "insert into t_patients_medecins (IdMedecin, IdPatient, Commentaire, Date_Deb, Date_Fin) values (" . $IdMedecin . ", " . $IdPatient . ", '" . $_POST['Commentaire'] . "'"; Il serait bon pour toi de préparer tes requêtes SQL (cf la doc php) pour éviter ce genre de failles. Ce message a été modifié par tibounise - 2 Jun 2014, 15:10. -------------------- Mon site web perso - Adaptateurs ADB/USB DIY - Réparation MacBook Air A1304 - Utiliser une iSight de MacBook Air en USB
Si vous souhaitez vous débarrasser de votre matériel informatique en région IDF, je suis preneur :) |
|
|
2 Jun 2014, 19:17
Message
#5
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 629 Inscrit : 21 Dec 2007 Membre no 103 074 |
Pour activer le mode "exception", il faut faire un : Code $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); juste après le new PDO(…); bonjour, c'est nickel. ça fonctionne merci Fais gaffe, ton code est sensible aux injections SQL : Code $Req = "insert into t_patients_medecins (IdMedecin, IdPatient, Commentaire, Date_Deb, Date_Fin) values (" . $IdMedecin . ", " . $IdPatient . ", '" . $_POST['Commentaire'] . "'"; Il serait bon pour toi de préparer tes requêtes SQL (cf la doc php) pour éviter ce genre de failles. c'est ce que je fais Ce message a été modifié par Eddoul - 2 Jun 2014, 19:16. -------------------- Machines en ma possession :
- Imac 20", 4,3Ghz, HDD 250, 4Go RAM |
|
|
Nous sommes le : 26th April 2024 - 14:19 |