PHP Sqlite3(不是PDO!)交易?

mr_*_*app 7 php sqlite transactions rollback

是否可以在PHP中使用sqlite3驱动程序的事务(和回滚)?我在这里找不到信息:http://de2.php.net/manual/en/book.sqlite3.php

我不想用PDO ......

谢谢你的帮助

F-3*_*000 19

是的,即使没有PDO,交易和回滚也是可能的.令人惊讶的是找到一个解释如何实现这一目标的例子是多么困难.不得不真正挖掘一些现成的代码来找出答案.

$db=new MyDB("database.db", SQLITE3_OPEN_READWRITE);

$db->exec('BEGIN;');

$stmt=$db->prepare('UPDATE table SET name = :name WHERE id = :id');
$stmt->bindValue(':id', $id, SQLITE3_INTEGER);
$stmt->bindValue(':name', $name, SQLITE3_TEXT);
$stmt->execute();

$db->exec('COMMIT;');
Run Code Online (Sandbox Code Playgroud)

逻辑来源:sombra2eternity,'MyDB'的来源:php.net

  • 困难的部分是何时“执行”imo。在这方面有很大的错误空间。我还建议将其包装在 `try` `catch` 中,并在 `catch` 中使用 `rollback`。 (2认同)