midorikocak / querymaker
QueryMaker 是一个小型库,帮助您创建简单的 PDO 查询
Requires
- php: ~7.4
Requires (Dev)
- opsway/psr12-strict-coding-standard: ^0.3.0
- phpunit/php-token-stream: ^3.1
- phpunit/phpunit: >=8.0
- squizlabs/php_codesniffer: ^3.0
README
这个小型库,允许您创建简单的 SQL 查询,以便与 PDO 简单地使用。只需使用简单的 db 命令名称的方法,您就可以创建无缝的语句和键值数组,以便在执行中使用。
动机
在使用 PDO 时,编写查询容易出现语法和参数错误。为了防止简单查询中的这些错误,您可以使用此库。
要求
严格要求 PHP 7.4。
安装
通过 Composer
$ composer require midorikocak/querymaker
使用方法
有创建查询的起始方法,例如 SELECT
和 UPDATE
。
选择
$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
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件 mtkocak@gmail.com 而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。