php连接mysql数据库的几种方式(mysql、mysqli、pdo)

php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。

一、特性及对比

  • PHP的MySQL扩展是设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口,并且是针对MySQL4.1.3或更早版本设计的。因此,这个扩展虽然可以与MySQL4.1.3或更新的数据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性。由于太过古老,又不安全,所以已被后来的mysqli完全取代。
  • PHP的mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MySQL4.1.3或更新版本中新的高级特性。其特点为:面向对象接口 、prepared语句支持、多语句执行支持、事务支持 、增强的调试能力、嵌入式服务支持 、预处理方式完全解决了sql注入的问题。不过其也有缺点, 就是只支持mysql数据库。如果你要是不操作其他的数据库,这无疑是最好的选择。
  • PDO是PHP Data Objects的缩写,其是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以使得你的PHP应用不去关心具体要 连接的数据库服务器系统类型。也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器,比如从oracle 到MySQL,仅仅需要修改很少的PHP代码。其功能类似于JDBC、ODBC、DBI之类接口。同样,其也解决了sql注入问题,有很好的安全性。不过 他也有缺点,某些多语句执行查询不支持(不过该情况很少)。

官文对于三者之间也做了列表性的比较:

PHP的mysqli扩展

PDO (使用PDO MySQL驱动和MySQL Native驱动)

PHP的mysql扩展

引入的PHP版本

5.0

5.0

3.0之前

PHP5.x是否包含

MySQL开发状态

活跃

在PHP5.3中活跃

仅维护

在MySQL新项目中的建议使用程度

建议 - 首选

建议

不建议

API的字符集支持

服务端prepare语句的支持情况

客户端prepare语句的支持情况

存储过程支持情况

多语句执行支持情况

大多数

是否支持所有MySQL4.1以上功能

大多数

从官方给出的这份结果上来看,优先推荐msqli,其次是pdo 。而“民间”给出的结果很多是倾向于使用PDO,因为其不担有跨库的优点,更有读写速度快的特点。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2016-08-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

apache-ab 并发负载压力测试

1613
来自专栏Snova云数仓

Greenplum的HA实践

GP集群的 Primary MasterA节点部署一个备份节点,即Slava Master B节点。

6516
来自专栏Python中文社区

几个提高工作效率的Python内置小工具

專 欄 ❈本文作者:赖明星 博客地址: https://www.zhihu.com/people/mingxinglai❈ 在这篇文章里,我们将会介绍4个Pyt...

2338
来自专栏我是攻城师

如何监控你的Hadoop+Hbase集群?

3164
来自专栏九彩拼盘的叨叨叨

CanIUse 命令行工具介绍

注意:如果使用的是Windows系统,需要在Git的命令行执行上述命令。否则会报Git Not Found的错。

531
来自专栏企鹅号快讯

如何搭建Nginx服务器做到负载均衡?

小白,这是一篇关于:使用tomcat和Nginx进行配合做负载均衡和静态与动态资源分配的文章,春招前学一下~ 好的,大佬! 1.什么是Nginx? Nginx也...

2455
来自专栏守望轩

Visual Studio 2008 每日提示(二十八)

#271、启用地址级调试的设置的作用是什么? 原文链接:What the Enable Address-Level Debugging option does...

2994
来自专栏懒人开发

bpkg工具

最近接手一个项目 本来是jenkinsfile相关, 但是由于这里很多实现都是用的shell 并且还是用的 bpkg 做的管理, 再在bpkg基础上, 写了...

1373
来自专栏枕边书

Linux - 请允许我静静地后台运行

前言 常在 linux 下玩耍的开发者肯定会经常遇到需要对进程调度的情况,在 windows 中点击 最小化 去干别的就 OK 了,那么在 linux 下怎么办...

2175
来自专栏北京马哥教育

Redis 集群教程

本文档是Redis集群的入门教程, 从用户的角度介绍了设置、测试和操作集群的方法。 本教程不包含晦涩难懂的分布式概念, 也没有像Redis 集群规范那样包含Re...

2777

扫码关注云+社区