首页 / PHP / 如何在PHP ADODB中回滚事务
如何在PHP ADODB中回滚事务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在PHP ADODB中回滚事务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1391字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试在php(mysql-driver)中使用ADODB进行数据库事务,
虽然由于某种原因我无法使交易有效.
目前代码看起来有点像这样(为简化顺序而简化)
// Start DB-connection
$db = NEWADOConnection('mysql');
$db->debug = false;
$db->disableBlobs = false;
$db->PConnect($host, $login, $password, $database); or die ("Connection failed");
// Start DB-transaction
$db->autoCommit = false; // According to doc, this should not be needed
$db->SetTransactionMode("SERIALIZABLE");
$db->StartTrans();
// Update some value
$statement = $db->Prepare("UPDATE tableName SET column=? WHERE id=$id");
$result = $db->Execute($statement, array($newValue));
// Do a rollback
$db->FailTrans(); // According to doc, indicates that CompleteTrans will rollback
$db->CompleteTrans();
// Close connection
$db->Close();
据我所知,ADODB的文档,代码应该工作,
虽然由于某种原因,运行此代码后表仍然更新.
有谁知道我忘记改变哪种配置?
提前致谢
JVApen
一些背景信息:
PHP-version: PHP 5.3.10-1ubuntu3.9
ADODB-version: V5.18
Documentation I've based my code on: http://phplens.com/lens/adodb/docs-adodb.htm
在有人对代码中的奇怪事情发表评论之前:
是的,我正在使用预准备语句和string-concat进行查询,
虽然$id是我可以控制的东西,而$newValue是一些输入参数.
解决方法:
发现问题,
这些问题似乎没有出现在ADODB中(尽管应该警告过).
将MySQL与MyISAM表而不是InnoDB表一起使用可确保不支持事务.
如果您将两者混合使用,则仅支持InnoDB表的事务.
将所有表格转换为InnoDB,现在问题似乎已得到解决.
内容总结
以上是互联网集市为您收集整理的如何在PHP ADODB中回滚事务全部内容,希望文章能够帮你解决如何在PHP ADODB中回滚事务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。