PHP/MySQL是主流的应用开发搭配方式,印象中PHP支持使用不少种数据库,并且MySQL就有mysql、mysqli、pdo三种API可用。本文旨在从PHP数据库访问设计的思路为轴,简单的捋清这些关系。mysql
PHP手册中《数据库扩展》一章有两部分:数据库抽象层、针对各数据库系统对应的扩展,已是足够的说明了,要更深入的理解可去研读。sql
首先,直接的想法是,PHP应该为不一样的数据库实现不一样的数据库抽象层,调用客户端库API来使用DBMS。以下图:数据库
而后,考虑这个场景:当PHP应用写好后,环境数据库不一样时,就要用对应的数据库抽象层重写项目全部数据库相关代码。因此可否把访问抽象出来,用不一样数据库时,只要切换不一样实现就ok了。以下图:服务器
最后,主流选用MySQL固然是既能够使用mysql、mysqli两种数据库抽象层,又能够使用PDO数据访问抽象层(须安装PDO_MYSQL扩展实现PDO接口)。以下图:spa
固然任何一个数据库抽象层,都要在PHP编译时都要指定数据库的客户端库以使用数据库服务器。以MySQL为例,推荐用mysqlnd库,配置项:
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd设计
如今是否是清晰些了呢?接口