grizz-it / dbal-pdo
实现PDO的数据库抽象层包
Requires
- php: ^8.0
- grizz-it/dbal: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
This package is not auto-updated.
Last update: 2024-09-16 03:38:29 UTC
README
GrizzIT DBAL PDO
GrizzIT DBAL PDO为GrizzIT DBAL提供PDO实现。此包仅实现了数据库连接和事务部分。
安装
要安装此包,请运行以下命令
composer require grizz-it/dbal-pdo
使用方法
创建连接
要通过GrizzIt\Dbal\Pdo\Component\Connection\PdoConnection
对象与数据库建立连接,建议使用包中提供的工厂。
首先,通过添加以下内容初始化工厂:
<?php use GrizzIt\Dbal\Pdo\Factory\PdoConnectionFactory; $factory = new PdoConnectionFactory;
然后,通过调用create
方法创建一个PdoConnection
实例。
<?php $connection = $factory->create( 'mysql:dbname=test;host=localhost', 'test', 'test' );
工厂将创建一个PDO
对象,将其注入到PdoConnection
对象中,并返回连接对象。
create
方法有以下参数
string $dsn
此参数期望一个DSN字符串。数据源名称(DSN)包含连接到数据库所需的信息。MySQL的示例字符串组成方法可在此处找到:这里。
string $username
此字符串期望数据库用户的用户名,您希望通过该用户名将应用程序连接到数据库。
string $password (可选)
密码字段期望前述用户的密码。
array $options (可选)
此参数期望以键值对形式提供特定于驱动程序的连接选项。这些选项可以在PHP.net上的PDO驱动程序页面找到。
array $attributes (可选)
此参数期望以键值对形式设置PDO属性。这些选项可在此处找到。所有这些选项都在初始化后立即设置在PDO对象上。
调用数据库
建立数据库连接后,可以向PdoConnection
发送查询对象,它们将在数据库上运行查询。
完全组装查询对象后,可以按以下方式执行:
// Immediate call to the database. $result = $connection->query($queryObject); // Transactional call to the database. $connection->startTransaction(); $result = $connection->query($queryObject); $connection->commit(); // It is also possible to rollback a transaction before it is committed: $connection->rollback();
如果查询是插入新记录,可以通过调用lastTransactionId获取插入ID
$connection->lastTransactionId();
读取结果
查询的结果通过GrizzIt\Dbal\Pdo\Component\Result\PdoQueryResult
类的实例发送回应用程序。可以通过运行foreach循环遍历此对象。如果需要一次性检索所有记录,则可以在结果对象上调用fetchAll()
方法。
可以通过“计数”对象来获取受影响的记录数
count($result); //Returns affected rows.
要断言查询的成功,可以在结果对象上调用isSuccess
方法。
可以通过在结果对象上调用getErrors
和getStatusCode
来获取状态代码和错误(查询失败的结果)。
所有SQLState状态代码可在此处找到:这里。
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
请参阅CONTRIBUTING和CODE_OF_CONDUCT以获取详细信息。
MIT许可证
版权所有 © GrizzIT
特此授予任何人免费获得本软件及其相关文档副本(“软件”)的权利,无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许获得软件的人进行此类操作,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任是基于合同、侵权或其他原因,源于、涉及或与本软件或其使用或其他交易有关。