php里mysql、mysqli 与 pdo详解
自己在写脚本的时候偶尔会用mysql,偶尔会用mysqli,有时候用mysql不能够执行成功,然后傻乎乎得又改成mysqli,也没有深究过之间的 区别,今天看stackoverflow无意浏览到了mysql与mysqli的区别的问题,于是深入学习了一下。使用百度的话是出不来 stackoverflow的答案的,究竟是stackoverflow不让收录还是百度不显示。。。咱就不深究了。百度出来的第一个结果是潘少宁的博客:
首先两个函数都是用来处理DB 的。 首先, mysqli 连接是永久连接,而mysql是非永久连接。什么意思呢? mysql连接每当第二次使用的时候,都会重新打开一个新的进程,而mysqli则只使用同一个进程,这样可以很大程度的减轻服务器端压力。 其次,mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。具体查看 http://cn.php.net/mysqli
应用比较多的地方是 mysqli的事务。
比如下面的示例:
看过之后只知道mysqli与mysql一个永久连接,一个是非永久连接。继续扒拉了一下第一页的结果,都差不多只提到了这么一个区别。
首先两个函数都是用来处理DB 的。 首先, mysqli 连接是永久连接,而mysql是非永久连接。什么意思呢? mysql连接每当第二次使用的时候,都会重新打开一个新的进程,而mysqli则只使用同一个进程,这样可以很大程度的减轻服务器端压力。 其次,mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。具体查看
$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(); }
看过之后只知道mysqli与mysql一个永久连接,一个是非永久连接。继续扒拉了一下第一页的结果,都差不多只提到了这么一个区别。
用谷歌试一试,好多stackoverflow上的问答,其中的答案很不错:
There are (more than) three popular ways to use MySQL from PHP.
(有3个主流php mysql接口)
the docs(用mysqli而不是老掉牙的mysql函数,多出来的”i"代表"improved"(改进版),相应的改进点可以在文档中找到。)
Here’s an interesting article showing benchmarks between the various libraries used to query MySQL databases. It looks like the mysql and mysqli libraries work much faster than PDO.
- The
mysql functions are procedural and use manual escaping.(mysql函数是过程化的,需要手动断连?这个escaping不知道该怎么翻译为好) - mysqli
is a replacement for the mysql functions, with object-oriented and procedural versions. It has support for prepared statements.(mysqli是mysql函数的一个替代品,是面向对象的,过程可视化,支持写好的语句。) - PDO
(PHP Data Objects) is a general database abstraction layer with support for MySQL among many other databases. It provides prepared statements, and significant flexibility in how data is returned.(PDO ,php数据对象,是一个通用的数据库抽象层,支持mysql与很多其他数据库混用,它支持写好的语句并且能够灵活显示返回的数据。)
Extension | Req/Sec |
mysqli |
164 |
mysql |
162 |
PDO |
88 |
mysqli (prepared) |
86 |
PDO (prepared) |
81
|
最新内容
- Linux系统下systemctl常用命令以及service文件配置
- CI PHP7 session 不能读取的问题
- centos 7.4 基本配置
- mysqldump导入导出数据库总结
- Linux下的tar压缩解压缩常用命令
- 查看 SELinux状态、临时关闭SELinux、永久关闭SELinux
- centos6.8 yum安装mysql 5.6
- CentOS之7与6的区别2
- CentOS之7与6的区别1
- Mysql 忘记root密码的完美解决方法
- 输入密码登录,Linux scp (rsync)设置nohup后台运行
- ubantu zabbix部署——安装配置zabbix agent详解
- Zabbix客户端(agent端口)安装配置
- CentOS 7添加开机启动服务/脚本
- 阿里云机器配置 centos 6.8