Pour le reste tu avais bon donc je n'ai rien dit
Visiblement je t'ai emboruillé en introduisant une requête préparée.
Une requête préparée est une requête pour laquelle tu isoles la requête proprement dite des valeurs qui font servir dedans, ceci en particulier afin de se protéger des injections SQL.
Toi tu faisais :
1 2
| $rqt_intervention = $bdd->prepare('INSERT INTO intervention (int_id, int_date, int_type) VALUES ('', '$date', '$type');');
$rqt_intervention->execute(); |
Tu utilisais déjà la preparation de requête (->prepare) mais en mettant directement tes variables dans la chaine de requête.
La bonne méthode est de mettre des marqueurs à la place des valeurs :
$rqt_intervention = $bdd->prepare('INSERT INTO intervention (int_date, int_type) VALUES (:int_date, :int_type);
et de fournir les valeurs au moment de l'execution
$rqt_intervention->execute(array(':int_date'=>$date, ':int_type'=>$type);
Ca c'est pour la partie execution de la requête.
Cette requête va créer un nouvel ID dans ta table intervention; tu vas avoir besoin de cet id pour faire ensuite les insertion dans ta table intervention_agent.
Postgresql peut fournir, en retour de la requête INSERT, l'id qu'il a créé ; on utilise RETURNING.
$rqt_intervention = $bdd->prepare('INSERT INTO intervention ( int_date, int_type) VALUES (:int_date, :int_type) RETURNING int_id;');
et effectivement je "fetch" l'unique et première valeur de l'unique et premier résultat :
1 2
| $row = $rqt_intervention->fetch();
$int_id = $row[0]; |
Partager