E 'possibile fare le transazioni di database MySQL e rollback con php?
-
06-09-2019 - |
Domanda
Esempio: effettuando un bonifico pagamento da utente A all'utente B. Account dell'utente A: -10 USD Conto utente B: +10 USD
se è presente una transazione, e qualcosa va storto, tutto viene annullata. Quindi, con le transazioni che non accadrà che il conto di utente A viene diminuito del 10, mentre il conto di utente B non viene aumentato del 10.
So che la gente java fanno uso di transazioni e rollback in tutto il luogo. Ma non ho mai sentito parlare di PHP-ragazzi che lo fanno.
Nessuna soluzione corretta
Altri suggerimenti
$db = new mysqli("localhost", "", "", "");
$db->autocommit(FALSE);
if ($db->query("INSERT ..."))
$db->commit();
else
$db->rollback();
Assicurarsi che le tabelle utilizzano il motore InnoDB
:. MyISAM
non supporta le transazioni
Aggiorna il commento :
InnoDB
è uno dei due motori di archiviazione principali utilizzati dal MySQL
, l'altro è MyISAM
.
MySQL
viene fornito con il supporto InnoDB
compilato per impostazione predefinita e in effetti ci vuole un certo sforzo per disattivarlo.
Non ho mai sentito parlare di MySQL
con InnoDB
disattivato anche da più economico dei hoster.
Se si utilizza DOP, ma ha anche il supporto delle transazioni
http://us2.php.net/manual/en/pdo .begintransaction.php
come è stato già detto, assicurarsi di utilizzare il motore di memorizzazione InnoDB.