grizz-it / dbal-pdo

实现PDO的数据库抽象层包

1.0.0 2021-04-03 12:50 UTC

This package is not auto-updated.

Last update: 2024-09-16 03:38:29 UTC


README

Build Status

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方法。

可以通过在结果对象上调用getErrorsgetStatusCode来获取状态代码和错误(查询失败的结果)。

所有SQLState状态代码可在此处找到:这里

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

请参阅CONTRIBUTINGCODE_OF_CONDUCT以获取详细信息。

MIT许可证

版权所有 © GrizzIT

特此授予任何人免费获得本软件及其相关文档副本(“软件”)的权利,无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许获得软件的人进行此类操作,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任是基于合同、侵权或其他原因,源于、涉及或与本软件或其使用或其他交易有关。