Maintenant j'ai bien avancé dans mon projet mais les problèmes se déplacent (ou c'est plutôt mon manque d'expérience qui fait surface...)
J'essaie d'enchaîner deux procédures de ce type. Je m'explique.
- j'ai une première procédure qui me permet de créer un terrain et de récupérer son id (id_terrain)
- j'ai une deuxième procédure qui me permet de créer une personne et de récupérer son id (id_personne)
Le but de cette opération est d'insérer ces deux id (id_terrain et id_personne) dans une table de liaison (table vendeur).
Donc j'ai comme code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $connectBDD = new PDO($dsn, $login, $mdp);
$connectBDD->beginTransaction();
$insertTerrain ="CALL InsertTerrain('valeur1', 'valeur2', @lastID)";
$insertVendeur ="CALL InsertVendeur('valeur1', 'valeur2', @lastID)";
$resultatTerrain = $connectBDD->query($insertTerrain);
$tabResultatTerrain = $resultatTerrain->fetch();
echo $tabResultatTerrain['lastID'];
$resultatVendeur = $connectBDD->query($insertVendeur);
$tabResultatVendeur = $resultatVendeur->fetch();
echo $tabResultatVendeur['lastID'];
$connectBDD->commit();
$connectBDD=null; |
Mais quand j'enchaîne ces deux procédures j'ai une erreur de ce type :
Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
J'ai l'impression qu'il manque une commande entre les deux exécutions des procédures mais laquelle ? J'ai beau regardé la doc de PDO, je ne vois pas...
Partager