一个围绕 PDO 的(非常受限的)包装器,用于使数据库访问在单元测试中可模拟。

v0.3.0 2017-03-14 21:03 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:47:34 UTC


README

一个围绕 PDO 的(非常受限的)包装器,用于使数据库访问在单元测试中可模拟。

功能

  • 用于 SELECTINSERTUPDATEDELETE 查询的方法。
  • 预处理语句,事务。
  • 允许以关联数组的形式传递参数。
  • 目前仅支持 MySQL。

使用方法

<?php

namespace tueenaLib\sql;

// Initialisation
$driver = new MySqlDriver('localhost', 'root', 'myPasswd', 'myDatabase', 3306);
$sql = new Sql($driver);

// Usage

// INSERT with prepared statement (works also with UPDATEs, SELECTs and DELETEs).
$preparedStatement = new PreparedStatement('INSERT into testtable (foo, bar) VALUES (:foo, :bar)');
$sql->insertWithPreparedStatement($preparedStatement, ['foo' => 'value1', 'bar' => 'value2']);

$result = $sql->insertWithPreparedStatement($preparedStatement, ['foo' => 'value2', 'bar' => 'value3']);
$affectedRows = $result->getNumAffectedRows();
$lastInsertId = $result->getLastInsertId(); // Works only for INSERT queries, of course.

// Transactions
$transaction = $sql->beginTransaction();
// UPDATE without prepared statement (like SELECTs, INSERTs and DELETEs)
$sql->update(
	'UPDATE testtable SET foo = :foo WHERE id = :id',
	[
		'foo' => 'value4',
		'id' => 1
	],
	$transaction // pass in the transaction object.
);
$sql->rollBack($transaction); // or use Sql::commit($transaction)

$result = $sql->select('SELECT * FROM testtable');
$numRows = $result->getNumRows();
$row1 = $result->fetchAssoc(); // associative array
$row2 = $result->fetchNumeric(); // numeric array
$row3 = $result->fetchNumeric(); // returns null if there is no more row.

许可证

MIT

要求

  • php >= 7.0.0
  • pdo

安装

如果你使用 Composer

composer require tueena-lib/sql

否则只需下载文件并使用。

联系

Bastian Fenske bastian.fenske@tueena.org