(PHP 5)
mysqli_rollback, mysqli->rollback() — Annule la transaction courante
Style procédural
bool mysqli_rollback ( mysqli $link )Style orienté objet (méthode)
class mysqli {Annule la transaction courante pour la base de données spécifiée par le paramètre link .
Style procédural uniquement : Un identifiant de lien retourné par la fonction mysqli_connect() ou par la fonction mysqli_init()
Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.
Exemple 1696. Style orienté objet
<?php
$mysqli
= new
mysqli
(
"localhost"
,
"my_user"
,
"my_password"
,
"world"
);
/* Vérification de la connexion */
if (
mysqli_connect_errno
()) {
printf
(
"Échec de la connexion : %s\n"
,
mysqli_connect_error
());
exit();
}
/* Désactive l'auto-commit */
$mysqli
->
autocommit
(
FALSE
);
$mysqli
->
query
(
"CREATE TABLE myCity LIKE City"
);
$mysqli
->
query
(
"ALTER TABLE myCity Type=InnoDB"
);
$mysqli
->
query
(
"INSERT INTO myCity SELECT * FROM City LIMIT 50"
);
/* Validation */
$mysqli
->
commit
();
/* Effacement de toutes les lignes */
$mysqli
->
query
(
"DELETE FROM myCity"
);
if (
$result
=
$mysqli
->
query
(
"SELECT COUNT(*) FROM myCity"
)) {
$row
=
$result
->
fetch_row
();
printf
(
"%d lignes dans la table myCity.\n"
,
$row
[
0
]);
/* Free result */
$result
->
close
();
}
/* Annulation */
$mysqli
->
rollback
();
if (
$result
=
$mysqli
->
query
(
"SELECT COUNT(*) FROM myCity"
)) {
$row
=
$result
->
fetch_row
();
printf
(
"%d lignes dans la table myCity (après annulation).\n"
,
$row
[
0
]);
/* Libération des résultats */
$result
->
close
();
}
/* Effacement de la table myCity */
$mysqli
->
query
(
"DROP TABLE myCity"
);
$mysqli
->
close
();
?>
Exemple 1697. Style procédural
<?php
$link
=
mysqli_connect
(
"localhost"
,
"my_user"
,
"my_password"
,
"world"
);
/* Vérification de la connexion */
if (
mysqli_connect_errno
()) {
printf
(
"Échec de la connexion : %s\n"
,
mysqli_connect_error
());
exit();
}
/* Désactive l'auto-commit */
mysqli_autocommit
(
$link
,
FALSE
);
mysqli_query
(
$link
,
"CREATE TABLE myCity LIKE City"
);
mysqli_query
(
$link
,
"ALTER TABLE myCity Type=InnoDB"
);
mysqli_query
(
$link
,
"INSERT INTO myCity SELECT * FROM City LIMIT 50"
);
/* Validation */
mysqli_commit
(
$link
);
/* Effacement de toutes les lignes */
mysqli_query
(
$link
,
"DELETE FROM myCity"
);
if (
$result
=
mysqli_query
(
$link
,
"SELECT COUNT(*) FROM myCity"
)) {
$row
=
mysqli_fetch_row
(
$result
);
printf
(
"%d lignes dans la table myCity.\n"
,
$row
[
0
]);
/* Libération des résultats */
mysqli_free_result
(
$result
);
}
/* Annulation */
mysqli_rollback
(
$link
);
if (
$result
=
mysqli_query
(
$link
,
"SELECT COUNT(*) FROM myCity"
)) {
$row
=
mysqli_fetch_row
(
$result
);
printf
(
"%d lignes dans le table myCity (après annulation).\n"
,
$row
[
0
]);
/* Libération des résultats */
mysqli_free_result
(
$result
);
}
/* Effacement de la table myCity */
mysqli_query
(
$link
,
"DROP TABLE myCity"
);
mysqli_close
(
$link
);
?>
L'exemple ci-dessus va afficher :
0 lignes dans la table myCity. 50 lignes dans la table myCity (après annulation).
mysqli_commit() |
mysqli_autocommit() |