Bonjour à tous,
Je modifie actuellement une interface pour la passer en PDO.
Une bonne partie fonctionne déjà, mais je bute face à un problème où je ne comprend pas la logique.
J'essaye de supprimer un enregistrement d'une table, pour celà je vérifie en premier qu'il existe , puis si c'est le cas je le supprime. Celà fonctionnait bien avant, mais depuis PDO il m'exécute les requetes dans le désordre.
Je veux dire lors de l'execution il supprime bien l'enregistrement puisque l'entrée a disparu de la table, mais il me fait une erreur, comme quoi l'enregistrement a disparu, alors qu'il est sensé vérifier avant de le supprimer son existence.
Je ne comprend pas vraiment tout.
J'utilise PDO sur postgresql.
Normalement j'utilise une classe qui étend PDO pour ma base, mais même en testant une requête sans cette classe le problème est le même.
Pouvez vous m'expliquer ce que je ne comprend pas, ou que je fais mal ?
A l'affichage : J'obtiens juste "BAD" et mon entrée a bien été supprimée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 try{ $test = new PDO('pgsql:host=127.0.0.1;dbname='.DATABASE_NAME,login,mdp); $test->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $stm = $test->prepare("SELECT id FROM clinical_study WHERE id=:id"); $stm->bindValue('id',$_GET['id_clinical_study'],PDO::PARAM_INT); $stm->execute(); if($stm->rowCount() != 1) echo "BAD"; else { echo "OK"; $test2 = new PDO('pgsql:host=127.0.0.1;dbname='.DATABASE_NAME,login,mdp); $stm2 = $test2->prepare("DELETE FROM clinical_study WHERE id=:id"); $stm2->bindValue('id',$_GET['id_clinical_study'],PDO::PARAM_INT); if($stm2->execute()) echo "DEL"; else echo "PB"; } } catch (PDOException $e) { print($e->getMessage()); }
Je ne vois jamais arriver "DEL" ou "PB" ou "OK".
Merci d'avance si quelqu'un peut m'expliquer.
Partager