La première requête sera exécutée avec succès, mais pour la deuxième requête, cela ne fonctionne pas. Ce qui suit est le codage que je déclare ma base de données et exécute deux des requêtes:L'annulation PDO et beginTransaction, ne peut pas fonctionner plus de 1 requête
$db = new PDO("sqlsrv:server=$servername ; Database=$databasename", $UserId, $pwd);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$sql2 = "INSERT INTO Header "
. "(Number,Date)"
. "VALUES (:Number, :Date)";
try
{
$stmt2 = $db->prepare($sql2);
$stmt2->bindParam("Number", $Number);
$stmt2->bindParam("Date", $Date);
$stmt2->execute();
$sql3 = "UPDATE table2
SET Number= :Number
WHERE Date= :Date ";
try
{
$stmt3 = $db->prepare($sql3);
$stmt3->bindParam("Number", $Number);
$stmt3->bindParam("Date ", $Date);
$stmt3->execute();
}
catch(PDOException $e)
{
$db->rollBack();
}
$db->commit();
}
catch(PDOException $e)
{
$db->rollBack();
}
je tente avant la validation automatique mis à faux par $db->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
, cependant, il affiche le message d'erreur the auto-commit mode cannot be changed for this driver
.
Vous n'avez pas besoin d'imbriquer les blocs 'try/catch', – RiggsFolly
Frappez-vous le bloc catch? Pouvez-vous var_dump l'exception dans le bloc catch et l'afficher ici? – krasipenkov
Cette deuxième requête, le UPDATE n'a pas de clause WHERE, cela pourrait-il être votre problème? – RiggsFolly