Ce face mysqli_autocommit
Implicit, MySQL rulează în modul autocommit: fiecare INSERT, UPDATE sau DELETE se salvează imediat. Cu mysqli_autocommit($conn, false), modificările se adună până la mysqli_commit sau mysqli_rollback, ca într-o tranzacție continuă.
Pentru o tranzacție punctuală este mai clar mysqli_begin_transaction, care nu schimbă modul conexiunii.
Exemplele de pe această pagină folosesc baza de date magazin, cu tabelul produse (coloanele id INT AUTO_INCREMENT, nume VARCHAR(100) NOT NULL, pret INT și stoc INT) și patru rânduri: Laptop (3200 lei, 5 buc.), Mouse (80 lei, 40 buc.), Monitor (900 lei, 0 buc.) și Tastatură (150 lei, 12 buc.). Comenzile SQL sunt explicate în secțiunea MySQL. Rezultatele au fost scrise pentru MySQL 8, pentru că exemplele au nevoie de un server de baze de date.
Parametri
| Parametru | Descriere |
|---|---|
$mysql |
Conexiunea. |
$enable |
true pornește salvarea automată, false o oprește. |
Ce returnează
true la succes.
Exemple
Exemplul 1: Oprirea salvării automate
<?php
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");
mysqli_autocommit($conn, false);
echo "autocommit = " . mysqli_fetch_row(mysqli_query($conn, "SELECT @@autocommit"))[0] . "\n";
mysqli_query($conn, "UPDATE produse SET pret = pret + 10");
mysqli_rollback($conn);
echo "Preț Mouse: " . mysqli_fetch_row(mysqli_query($conn, "SELECT pret FROM produse WHERE id = 2"))[0] . "\n";
mysqli_autocommit($conn, true);
Rezultat (cu un server MySQL și tabelul produse de mai sus)
autocommit = 0
Preț Mouse: 80
Greșeli frecvente
- Oprești autocommit și uiți de el. Toate modificările scriptului se pierd la final, pentru că nu a existat niciun
commit.
Comenzi înrudite
mysqli_begin_transaction: Începe o tranzacție: modificările următoare se salvează toate împreună cu commit sau se anulează toate cu rollback.mysqli_commit: Salvează definitiv toate modificările făcute în tranzacția curentă.mysqli_rollback: Anulează toate modificările făcute în tranzacția curentă.