IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> PHP & Mysql : impossible de récupérer les erreurs [Résolu]
Options
Eddoul
posté 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
Go to the top of the page
 
+Quote Post
yponomeute
posté 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
Go to the top of the page
 
+Quote Post
Bru
posté 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(…);
Go to the top of the page
 
+Quote Post
tibounise
posté 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 :)
Go to the top of the page
 
+Quote Post
Eddoul
posté 2 Jun 2014, 19:17
Message #5


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 629
Inscrit : 21 Dec 2007
Membre no 103 074



Citation (Bru @ 28 May 2014, 11:58) *
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

Citation (tibounise @ 2 Jun 2014, 16:07) *
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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 26th April 2024 - 14:19