Bonjour,
Je ne suis pas certain que ce soit le bon forum, je m'excuse d'avance si je me suis trompé.
Je rencontre un petit "problème", auparavant j'avais codé en php une insertion de données avant suppression (insertion dans une table "archive") et m'étant un peu renseigné sur d'autres possibilités, j'ai remarqué qu'il était peut-être préférable de faire cela via trigger ?
Néanmoins n'ayant jamais fait de trigger je coince un peu avec ceci :
Désolé pour l'indentation bizarre. J'avais jamais fait de trigger auparavant, il est possible que ce soit vraiment horrible à voir. :/
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
22
23
24
25
26
27
28
29
30
31 require_once('../modele/bdd.php'); if(isset($_POST['del'])) { $reserv = htmlspecialchars($_POST['del']); $archivage = $db->prepare("SELECT * FROM reservation WHERE id_reservation = :id"); $archivage->execute(array(':id'=>$reserv)); $resultat = $archivage->fetch(); $trigger = $db->prepare('CREATE TRIGGER tr_archivage AFTER DELETE ON reservation FOR EACH ROW DECLARE id = '.$reserv.'; BEGIN INSERT INTO archive (id_reservation, id_adherent, date) VALUES(:id_reservation, :id_adherent, :date) END;'); $trigger->execute(array( ':id_reservation'=>$resultat['id_reservation'], ':id_adherent'=>$resultat['id_adherent'], ':date'=>$resultat['date'] )); $result = $trigger->fetch();
En résumé : Je souhaiterais insérer dans une table archive les données supprimées de ma table reservation grâce à ce trigger
Je ne sais pas si le $result = $trigger->fetch(); est nécessaire, il suffit simplement de l'executer non?
Voici l'erreur obtenue :
Merci d'avance ^^Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE id = 218; BEGIN INSERT INTO archive (id_reservatio' at line 6 in C:\wamp\www\SuapsGolf\modele\suppr.php on line 35
Partager