peteraba/foo-pdo

此包已被 废弃 且不再维护。未建议替代包。

Pdo 语句预处理器(例如,简单的 IN () WHERE 子句)

dev-master 2017-04-19 23:20 UTC

This package is auto-updated.

Last update: 2021-03-09 14:06:21 UTC


README

Pdo 语句预处理器(例如,简单的 IN () WHERE 子句)

Build Status License composer.lock Scrutinizer Code Quality Code Coverage Build Status

设置

通过 composer 安装库

composer install peteraba/foo-pdo

使用

使用未命名参数

$sql           = 'SELECT name, age, salary FROM employee WHERE age > ? AND department_id IN (?)';
$departmentIds = [3, 4, 6];
$minAge        = 40;
$parameters    = [$minAge, $departmentIds];

$preprocessor = (new \Foo\Pdo\Statement\Preprocessor\Factory())->getPreprocessor();

$preprocessor->process($sql, $parameters);
// $sql = 'SELECT name, age, salary FROM employee WHERE age > ? department_id IN (?, ?, ?)'
// $departmentIds = [40, 3, 4, 6];

使用命名参数

$sql           = 'SELECT name, age, salary FROM employee WHERE age > :age AND department_id IN (:departmentIds)';
$departmentIds = [3, 4, 6];
$minAge        = 40;
$parameters    = [$minAge, $departmentIds];

$preprocessor = (new \Foo\Pdo\Statement\Preprocessor\Factory())->getPreprocessor();

$preprocessor->process($sql, $parameters);
// $sql = 'SELECT name, age, salary FROM employee WHERE age > :age department_id IN (:departmentIds__expanded0, :departmentIds__expanded1, :departmentIds__expanded2)'
// $departmentIds = [
    'age' => 40,
    'departmentIds__expanded0' => 3,
    'departmentIds__expanded1' => 4,
    'departmentIds__expanded2' => 6,
];

注意:当前实现能够处理混合的命名和未命名参数,但未来无法保证这一点,因此您应避免使用此不受支持的功能。