eclipxe/engineworks-dbal

PHP 数据库抽象层

v2.3.5 2024-04-29 16:02 UTC

README

Source Code Latest Version Software License Build Status Scrutinizer Coverage Status Total Downloads

我创建这个库是为了抽象与关系型数据库的交互。当时创建它的时候,PDO 扩展还不存在。如果可能的话,尽量使用 PDO 而不是这个库,主要是因为预处理语句。

我维护这个库是因为我有一些应用程序依赖于它,而且我已经把它分享给了其他人,这样他们也可以维护自己的项目。

安装

要安装这个库,你可以使用

composer require eclipxe/engineworks-dbal

对象

EngineWorks\DBAL\DBAL

主要连接对象,有多个查询方法以获取所需的结果。它还包含 sql 方法以将不同驱动程序的 SQL 方言转换为 SQL。

EngineWorks\DBAL\Recordset

Recordset 类模拟了记录集的主要方法

  • 使用 SQL 语句打开记录集。
  • 使用当前游标遍历记录集。
  • 使用值数组访问值,存储原始值。
  • 使用魔法方法 Update 和 Delete。
  • 将数据库类型转换为常见类型。

某些驱动程序不知道如何获取查询上的主键,在这种情况下,您可以指定要影响的实体以及主键。

Mysql 驱动支持此功能,它将检查主键、自增字段或唯一索引。

EngineWorks\DBAL\Pager

Pager 类使用 Recordset 访问查询的有限页面,它不会加载所有记录,而只加载请求的记录

关于驱动程序

此库支持 Mysqli、Mssql、Sqlsrv 和 Sqlite3 驱动程序,你可以自由创建自己的并(请)与我分享。

Mysqli

  • 这是生产环境中测试最多的驱动程序。

Sqlsrv

  • 此驱动程序使用 Microsoft PHP Driver for SQL Server。
  • 结果不知道查询的实体或主键。在创建用于更新或删除的 Recordset 时使用 overrideEntity 和 overrideKeys。

Sqlite3

  • 结果不知道查询的实体或主键。在创建用于更新或删除的 Recordset 时使用 overrideEntity 和 overrideKeys。
  • 当结果为空(没有可检索的内容)时,无法知道字段类型,这使得此驱动程序在 Recordset 中更新时不稳定。
  • SQLite3Result::fetchArray 方法在列表末尾之后被调用时将光标置于第一个位置。此行为已在 Result 中得到纠正,fetch 总是返回 false。

Mssql

  • 此驱动程序使用 PDO dblib,你需要 FreeTDS。
  • 结果不知道查询的实体或主键。在创建用于更新或删除的 Recordset 时使用 overrideEntity 和 overrideKeys。
  • quote(PDO::quote)函数在多字节字符串中失败,我们使用简单的 ''' 替换。
  • 此驱动程序实际上不与 PHP 7 兼容,请改用 Sqlsrv。

兼容性

此类将与 PHP 支持的版本 兼容。

贡献

欢迎贡献!请阅读 CONTRIBUTING 以获取详细信息,并不要忘记查看 TODOCHANGELOG 文件。

许可

《eclipxe/engineworks-dbal》库版权所有 © Carlos C Soto,并许可在MIT许可证(MIT)下使用。有关更多信息,请参阅LICENSE