PDO bietet Funktionen zu initiieren, zu begehen, und Rollback-Transaktionen:PDO Transaktionsfunktionen vs MySQL Transaktionsanweisungen?
$dbh->beginTransaction();
$sth = $dbh->prepare('
...
');
$sth->execute(); // in real code some values will be bound
$dbh->commit();
Gibt es einen Grund, die PDO-Funktionen zu verwenden, um über die Transaktionsanweisungen in MySQL einfach mit? Das heißt:
$sth = $dbh->prepare('
START TRANSACTION;
...
COMMIT;
');
$sth->execute(); // in real code some values will be bound
UPDATE: Nur ein Hinweis auf jemand anderes in diese suchen, nach einigen Tests fand ich tatsächlich den zweiten Fall, der oben (unter Verwendung von START TRANSACTION
und COMMIT
in prepare()
) in eine Ausnahme ausgelöst führen wird. Um also Transaktionen mit einer vorbereiteten Anweisung zu verwenden, müssen Sie die im ersten Fall gezeigten PDO-Funktionen verwenden.
Diese emulierte Transaktion ist manchmal nützlich, aber manchmal müssen Sie das Ergebnis z. Zuletzt ID aus einer Abfrage in der Transaktion einfügen. – Zaffy