摘要:手册中数据库扩展一章有两部分数据库抽象层针对各数据库系统对应的扩展,已经是足够的说明了,要更深刻的理解可去研读。首先,直接的想法是,应该为不同的数据库实现不同的数据库抽象层,调用客户端库来使用。
PHP/MySQL是主流的应用开发搭配方式,印象中PHP支持使用很多种数据库,而且MySQL就有mysql、mysqli、pdo三种API可用。本文旨在从PHP数据库访问设计的思路为轴,简单的捋清这些关系。
PHP手册中《数据库扩展》一章有两部分:数据库抽象层、针对各数据库系统对应的扩展,已经是足够的说明了,要更深刻的理解可去研读。
首先,直接的想法是,PHP应该为不同的数据库实现不同的数据库抽象层,调用客户端库API来使用DBMS。如下图:
然后,考虑这个场景:当PHP应用写好后,环境数据库不同时,就要用对应的数据库抽象层重写项目所有数据库相关代码。所以能否把访问抽象出来,用不同数据库时,只要切换不同实现就ok了。如下图:
最后,主流选用MySQL当然是既可以使用mysql、mysqli两种数据库抽象层,又可以使用PDO数据访问抽象层(须安装PDO_MYSQL扩展实现PDO接口)。如下图:
当然任何一个数据库抽象层,都要在PHP编译时都要指定数据库的客户端库以使用数据库服务器。以MySQL为例,推荐用mysqlnd库,配置项:
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd
现在是不是清晰些了呢?
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/30333.html
摘要:手册中数据库扩展一章有两部分数据库抽象层针对各数据库系统对应的扩展,已经是足够的说明了,要更深刻的理解可去研读。首先,直接的想法是,应该为不同的数据库实现不同的数据库抽象层,调用客户端库来使用。 PHP/MySQL是主流的应用开发搭配方式,印象中PHP支持使用很多种数据库,而且MySQL就有mysql、mysqli、pdo三种API可用。本文旨在从PHP数据库访问设计的思路为轴,简单的...
摘要:具体参考基于扩展实现真正的数据库连接池方式三加上参考文档参数化查询为什么能够防止注入 pdo防sql注入原理 PdoTest.php class PdoTest() { protected $db; protected $user; protected $pass; public function __construct($user = root,...
摘要:的毫秒级超时也有问题。。中超时实现一初级最简单的超时实现秒级超时思路很简单链接一个后端,然后设置为非阻塞模式,如果没有连接上就一直循环,判断当前时间和超时时间之间的差异。实际处理这个调用的部件在完成后,通过状态通知和回调来通知调用者。 概述 在PHP开发中工作里非常多使用到超时处理到超时的场合,我说几个场景: 异步获取数据如果某个后端数据源获取不成功则跳过,不影响整个页面展现 为了保...
阅读 3223·2021-11-23 09:51
阅读 1030·2021-08-05 09:58
阅读 663·2019-08-29 16:05
阅读 971·2019-08-28 18:17
阅读 3028·2019-08-26 14:06
阅读 2721·2019-08-26 12:20
阅读 2154·2019-08-26 12:18
阅读 3064·2019-08-26 11:56