eclipxe / engineworks-dbal
PHP 数据库抽象层
v2.3.5
2024-04-29 16:02 UTC
Requires (Dev)
- ext-mysqli: *
- ext-pdo: *
- ext-simplexml: *
- ext-sqlite3: *
- fakerphp/faker: ^1.14
- phpunit/phpunit: ^9.5
- vlucas/phpdotenv: ^3.6
Suggests
- ext-PDO: Needed to run drivers that depends on PDO (pdo_sqlsrv & pdo_dblib)
- ext-mysqli: Needed to run \EngineWorks\DBAL\Mysqli driver
- ext-pdo_dblib: Needed to run \EngineWorks\DBAL\Mssql driver
- ext-pdo_sqlsrv: Needed to run \EngineWorks\DBAL\Sqlsrv driver
- ext-sqlite3: Needed to run \EngineWorks\DBAL\Sqlite driver
README
我创建这个库是为了抽象与关系型数据库的交互。当时创建它的时候,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 以获取详细信息,并不要忘记查看 TODO 和 CHANGELOG 文件。
许可
《eclipxe/engineworks-dbal》库版权所有 © Carlos C Soto,并许可在MIT许可证(MIT)下使用。有关更多信息,请参阅LICENSE。