midorikocak/querymaker

QueryMaker 是一个小型库,帮助您创建简单的 PDO 查询

v1.4.7 2020-03-15 04:01 UTC

This package is auto-updated.

Last update: 2024-08-28 16:55:29 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

这个小型库,允许您创建简单的 SQL 查询,以便与 PDO 简单地使用。只需使用简单的 db 命令名称的方法,您就可以创建无缝的语句和键值数组,以便在执行中使用。

动机

在使用 PDO 时,编写查询容易出现语法和参数错误。为了防止简单查询中的这些错误,您可以使用此库。

要求

严格要求 PHP 7.4。

安装

通过 Composer

$ composer require midorikocak/querymaker

使用方法

有创建查询的起始方法,例如 SELECTUPDATE

选择

$queryMaker = new QueryMaker();
$queryMaker->select('users');
echo $queryMaker->getQuery();

上面的示例将输出

SELECT * FROM users

选择字段

可以指定要选择的字段

$queryMaker = new QueryMaker();
$queryMaker->select('users', ['id', 'email']);
echo $queryMaker->getQuery();

上面的示例将输出

SELECT id, email FROM users

具有不同运算符的字段

字段值可以包含运算符,例如: =,>, <,<=,>=

$queryMaker = new QueryMaker();
$queryMaker->select('users', ['id', 'email'])->where('id', '3', '>=');
echo $queryMaker->getQuery();
echo $queryMaker->getStatement();

上面的示例将输出

SELECT id, email FROM users WHERE id>='3'
SELECT id, email FROM users WHERE id>=:id' 

删除

$queryMaker = new QueryMaker();
$queryMaker->delete('users');
echo $queryMaker->getQuery();

上面的示例将输出

DELETE FROM users

WHERE

要指定 WHERE 子句,请使用 where($key, $value) 方法。

$queryMaker = new QueryMaker();
$queryMaker->select('users', ['id', 'email'])->where('id', 3);
echo $queryMaker->getQuery();
echo $queryMaker->getStatement();

上面的示例将输出

SELECT id, email FROM users WHERE id='3'
SELECT id, email FROM users WHERE id=:id

AND 和 OR

AND 和 OR 等约束也是方法。 and($key, $value)or($key, $value)

$queryMaker = new QueryMaker();
$queryMaker->select('users', ['id', 'email'])->where('id', 3)->and('email', 'mtkocak@gmail.com')->or('username', 'midori');
echo $queryMaker->getQuery();
echo $queryMaker->getStatement();

上面的示例将输出

SELECT id, email FROM users WHERE id='3' OR username='midori'
SELECT id, email FROM users WHERE id=:id OR username=:username

多个 AND 和 OR 子句可以具有相同的字段条件。

$queryMaker = new QueryMaker();
$queryMaker->select('users', ['id', 'email'])->where('email', 'mtkocak@gmail.com')->and('id', '>3')->and('id', '<5');

ORDER BY

要指定 ORDER BY 子句,请使用 order($key, $order) 方法。

$queryMaker = new QueryMaker();
$queryMaker->select('users')->orderBy('id');
echo $queryMaker->getQuery();

上面的示例将输出

SELECT * FROM users ORDER BY id ASC

OFFSET 和 LIMIT

要指定 OFFSET 和 LIMIT 子句,请使用 offset($offset)limit($offset) 方法。

$queryMaker = new QueryMaker();
$queryMaker->select('users')->orderBy('id')->limit(3)->offset(2);
echo $queryMaker->getQuery();

上面的示例将输出

SELECT * FROM users ORDER BY id ASC LIMIT 3 OFFSET 2

获取键值数组以执行

还可以获取键值对以轻松执行。

$db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

$queryMaker = new QueryMaker();

$queryMaker->select('users', ['id', 'email'])->where('id', 3)->and('email', 'mtkocak@gmail.com')->or('username', 'midori');

$statement = $db->prepare($query->getStatement());

$statement->execute($query->getParams());

插入

要指定 INSERT 操作,insert() 方法,需要键值数组。

$queryMaker = new QueryMaker();
$queryMaker->insert('users', ['email' => 'mtkocak@gmail.com', 'username' => 'midorikocak']);
echo $queryMaker->getQuery();
echo $queryMaker->getStatement();

上面的示例将输出

INSERT INTO users (email, username) VALUES ('mtkocak@gmail.com', 'midorikocak')
INSERT INTO users (email, username) VALUES (:email, :username)

更新

要指定 UPDATE 操作,方便的 update() 方法,需要键值数组。所有语句参数都经过彻底生成。

$queryMaker = new QueryMaker();
$queryMaker->update('users', ['email' => 'mtkocak@gmail.com', 'username' => 'midorikocak'])->where('id', 3);
echo $queryMaker->getQuery();
echo $queryMaker->getStatement();

上面的示例将输出

UPDATE users SET email='mtkocak@gmail.com', username='midorikocak' WHERE id='3'
UPDATE users SET email=:email, username=:username WHERE id=:id

警告

此库仅用于教育目的。使用时请自行承担风险。公开查询值和使用它可能会引发安全问题。

变更日志

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

测试

$ composer test

贡献

有关详细信息,请参阅 CONTRIBUTINGCODE_OF_CONDUCT

安全性

如果您发现任何与安全相关的问题,请通过电子邮件 mtkocak@gmail.com 而不是使用问题跟踪器。

鸣谢

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件