首先, mysqli 连接是永久连接,而mysql是非永久连接。什么意思呢? mysql连接每当第二次使用的时候,都会重新打开一个新的进程,而mysqli则只使用同一个进程,这样可以很大程度的减轻服务器端压力 在PHP中,数据库操作是应用程序的重要组成部分,特别是对于处理数据一致性、并发性和错误恢复的场景。MySQL和mysqli扩展是PHP中处理MySQL数据库的两种常见方式。这篇文章主要关注PHP中的MySQL和mysqli扩展在事务处理上的差异和使用方法。 mysqli(MySQL Improved)扩展相比传统的mysql扩展,提供了一些显著的优势。mysqli是MySQL的增强版,它支持更多的功能,包括预处理语句、面向对象的接口以及事务处理。其中,mysqli的一个关键特性是它的持久连接(Persistent Connection),这意味着在多次请求之间可以重用相同的数据库连接,从而减少服务器资源的消耗。相比之下,mysql扩展每次连接数据库时都会创建新的进程,这可能导致不必要的系统负载。 在事务处理方面,mysqli提供了更直观和强大的支持。事务是一组SQL操作,它们作为一个整体执行,要么全部成功,要么全部失败。在mysqli中,你可以通过设置`autocommit`为`false`来开始一个事务,然后执行一系列SQL语句。如果所有语句都成功,可以调用`commit`提交事务;如果有任何错误,可以调用`rollback`回滚事务,以确保数据库的一致性。以下是一个简单的mysqli事务示例: ```php $mysqli = new mysqli('localhost','root','','DB_Lib2Test'); $mysqli->autocommit(false); $mysqli->query($sql1); $mysqli->query($sql2); if (!$mysqli->errno) { $mysqli->commit(); echo 'ok'; } else { echo 'err'; $mysqli->rollback(); } ``` 相反,使用传统的mysql扩展进行事务处理,你需要手动开启事务,关闭自动提交,并在事务结束时提交或回滚。以下是一个使用mysql函数的例子: ```php $conn = mysql_connect('localhost','root',''); mysql_select_db('DB_Lib2Test'); mysql_query('start transaction'); mysql_query('SET autocommit=0'); mysql_query($sql1); mysql_query($sql2); if (mysql_errno()) { mysql_query('rollback'); echo 'err'; } else { mysql_query('commit'); echo 'ok'; } // mysql_query('SET autocommit=1'); ``` 值得注意的是,不同的MySQL存储引擎对事务的支持程度不同。MyISAM不支持事务,适合只读程序以提高性能;InnoDB是支持ACID事务、行级锁定和并发处理的存储引擎,通常用于需要事务处理的环境;Berkeley DB也支持事务。 MySQL默认在每条SQL语句后执行COMMIT,这意味着每条单独的SQL语句被视为一个事务。但是,在需要批量操作的事务中,我们需要关闭autocommit(设为0),并使用`START TRANSACTION`显式开始事务。如果不这样做,可能会导致预期之外的结果,例如,某些SQL语句可能不会被提交或回滚,从而影响数据的完整性和一致性。 总结来说,mysqli扩展是PHP处理MySQL数据库的推荐方式,因为它提供了更好的性能、安全性和事务处理能力。在编写涉及事务的PHP代码时,确保正确设置事务边界,关闭自动提交,并根据需要处理错误,这是保证数据库数据一致性的关键步骤。同时,选择合适的存储引擎,如InnoDB,以利用其事务支持和并发控制特性,也是数据库设计中的重要因素。























- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- EXCEL在财务、销售及管理工作中的应用(1).doc
- Android NDK (android-ndk-r28c-darwin.dmg)
- 集中式财务管理软件操作培训资料教程.ppt
- 西门子LOGO0BA7与电脑通信配置方法.doc
- 软件项目团队管理教学文案.ppt
- 华中科技大学计算机组成原理慕课答案.doc
- 生鲜电商大数据.doc
- [互联网]光缆线路的敷设安装与防护讲解材料.ppt
- Visual-Studio-2005-Team-System架构设计实践.ppt
- 基于单片机的霓虹灯控制系统设计.doc
- 高校教师通信消费习惯分析报告ppt(1).ppt
- 基于matlab的MIMO通信系统.doc
- 大连理工大学软件学院离散数学小结公开课一等奖优质课大赛微课获奖课件.pptx
- 电商营销物联网.doc
- ofd web阅读器 单个文件实现web阅读功能 完全免费 易于集成
- 探究以就业为导向的中职计算机课堂教学实践.docx



评论0