j'aimerai avoir une explication svp car là je commence à m'arracher les cheveux
je m'explique, j'ai deux requêtes à exécuter et j'aimerai que si, une foire, les deux ne soit pas exécutées, d'où les fonctions beginTransaction(), commit() et rollBack().
Le problème: j'ai beau mettre ces trois fonction, rien y fait, une requête est quand exécutée
alors je me suis dit que peut être il fallait une version de PHP suffisante (d'après quelque sources sur le web) (je tourne en local avec WAMPSERVER 2.0)
ou alors peut être définir un attribut (ATTR) lors de connexion à MySQL avec PDO ?
voici mon code (en exemple, je met pas tout car il est long):
<?php
try {
$sth1 = $bdd->prepare("UPDATE table1 SET bidule = :bidule WHERE machin = :machin");
$sth2 = $bdd->prepare("INSERT INTO table2 SET pseudo = :pseudo, mail = :mail");
$bdd->beginTransaction();
$sth1->execute(array(':bidule' => 'Bidule',':machin' => 'Machin'));
$sth2->execute(array(':pseudo' => 'Albert',':mail' => '[email protected]'));
$bdd->commit();
echo "<p>UPDATE et INSERT ok !</p>";
} catch(Exception $e) {
$bdd->rollBack();
echo "<p>Une erreur s'est produite.</p>";
echo "Erreur: ".$e->getMessage();
echo "<br />Ligne: ".$e->getLine();
}
?>
Je vous remercie d'avance pour vos éventuelles réponses.
Cdt.
two3d