J'ai quelques questions sur la façon dont ce code du manuel PHP fonctionne. Je vois d'autres exemples qui lancent des exceptions (généralement du code orienté objet) ou utilisent des drapeaux pour suivre les échecs de chaque requête individuelle.Un échec de mysqli_commit est-il automatiquement annulé?
Ma question est pourquoi devriez-vous signaler les erreurs et tester le drapeau avant de décider de valider ou de restaurer. En regardant l'exemple ci-dessous, il apparaît que si la validation ne fonctionne pas, aucune des requêtes ne sera validée de toute façon.
J'ai également remarqué qu'ils sortent simplement en cas d'échec de la validation. Cela annule-t-il automatiquement tout?
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "test");
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* set autocommit to off */
mysqli_autocommit($link, FALSE);
mysqli_query($link, "CREATE TABLE Language LIKE CountryLanguage");
/* Insert some values */
mysqli_query($link, "INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)");
mysqli_query($link, "INSERT INTO Language VALUES ('DEU', 'Swabian', 'F', 9.4)");
/* commit transaction */
if (!mysqli_commit($link)) {
print("Transaction commit failed\n");
exit();
}
/* close connection */
mysqli_close($link);
?>
Où commencez-vous votre transaction? – Sven
@Sven il peut être clairement vu dans le code. –