ulrack / dbal-pdo
Requires
- php: ^7.3
- ulrack/dbal: ^1.1
Requires (Dev)
- phpunit/phpunit: ^9.3
- squizlabs/php_codesniffer: ^3.5
README
Ulrack DBAL PDO
Ulrack DBAL PDO 为 Ulrack DBAL 提供PDO实现。此包仅实现数据库连接和事务部分。
安装
要安装此包,请运行以下命令
composer require ulrack/dbal-pdo
用法
创建连接
要使用 Ulrack\Dbal\Pdo\Component\Connection\PdoConnection 对象与数据库建立连接,建议使用包中提供的工厂。
首先,通过添加以下内容初始化工厂:
<?php use Ulrack\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();
读取结果
查询的结果通过Ulrack\Dbal\Pdo\Component\Result\PdoQueryResult类的实例发送回应用程序。可以通过遍历该对象来迭代它,如果需要一次性检索所有记录,则可以在结果对象上调用fetchAll()方法。
可以通过“计数”对象来获取受影响的记录数。
count($result); //Returns affected rows.
要断言查询的成功,可以在结果对象上调用isSuccess方法。
可以通过调用结果对象上的getErrors和getStatusCode来获取状态码和错误(失败查询的结果)。
所有SQLState状态码都可以在这里找到:这里。
变更日志
有关最近更改的详细信息,请参阅CHANGELOG。
贡献
有关详细信息,请参阅CONTRIBUTING和CODE_OF_CONDUCT。
MIT许可
版权所有 (c) GrizzIT
特此授予任何获得此软件及其相关文档副本(“软件”)的个人免费使用权,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供方提供软件的人这样做,但受以下条件约束:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和不侵犯版权。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任承担责任,无论此类责任是因合同、侵权或其他行为引起的,无论此类责任是否源于、源自或与软件或软件的使用或其他方式有关。