Si j'ai plusieurs requêtes sur la chaîne, sur une structure basée sur FI, comme ceci:requêtes MySQL Restauration d'
$query1 = mysqli_query("query here");
if(!query1){
//display error
} else {
$query2 = mysqli_query("another query here");
if(!query2){
//display error
//rollback the query1
} else {
query3 = mysqli_query("yet again another query");
if(!query3) {
//display error
//rollback the query2
//rollback the query1
} else {
query4 = mysqli_query("eh.. another one");
if(!query4){
//display error
//rollback the query3
//rollback the query2
//rollback the query1
} else {
return success;
}
}
}
}
Y at-il une meilleure façon de rollback la requête précédente, si le prochain échoue? Sinon, je vais avoir la première requête 2 succès, qui a édité la base de données, mais le 3 ° a échoué, donc 3 ° et 4 ° n'a pas édité la dabatase, avec le résultat de l'avoir corrompu.
Je pensais à quelque chose comme:
...
$query2 = mysqli_query("another query here");
if(!query2){
//display error
$rollback = mysqli_query("query to rollback query1");
} else {
query3 = mysqli_query("yet again another query");
if(!query3) {
//display error
$rollback = mysqli_query("query to rollback query2");
$rollback = mysqli_query("query to rollback query1");
} else {
...
Mais les subventions de la méthode ci-dessus encore plus de chances d'échouer plus de requêtes. Existe-t-il d'autres méthodes plus efficaces?
Pour « rollback » une requête, utilisez begin tran premier et l'utilisation de validation ou l'annulation, je vous conseille de chercher transactions – Rhopercy
Comment exactement je fais ça? une référence/un guide? –
Vous pouvez commencer ici: https://dev.mysql.com/doc/refman/5.7/en/commit.html – Rhopercy