ludal / mysql-querybuilder
一个用于简单MySQL查询的PHP查询构建器
v0.5.2
2021-10-26 16:53 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-29 05:36:33 UTC
README
composer require ludal/mysql-querybuilder
ℹ️ 介绍
这是一个用于简单MySQL查询的PHP查询构建器。它允许您在不使用字符串或heredoc的情况下编写它们,这通常会使代码的整洁性受损。
此包旨在支持MySQL数据库管理系统。但是,它可能与其他DBMS(PostgreSQL、SQLite...)一起工作,但我不能保证,所以请自行承担风险。
💡 用 ❤️ 在 🇫🇷 制作
📘 使用方法
入门
首先,初始化一个新的QueryBuilder实例。
$builder = new QueryBuilder();
💡 您还可以传递PDO实例作为参数以直接执行和检索查询。
$pdo = new PDO($dsn, $login, $password); $builder = new QueryBuilder($pdo);
从这个实例开始,您现在可以构建您的查询
$select = $builder ->select() ->from('users') ->where('name = :name'); $update = $builder ->update('users') ->set(['name' => 'John']) ->where('id = 6');
然后,您可以执行以下操作:
- 将查询转换为SQL字符串:
toSQL()
- 绑定参数:
setParam('name', 'John')
,setParams(['name' => 'John'])
... - 执行查询:
execute()
,execute(['John'])
... - 检索查询结果:
fetch()
,fetchAll()
,fetch(PDO::FETCH_COLUMN)
... - 获取行数:
rowCount()
- 获取与您的查询对应的PDO语句:
getStatement()
- 更多:请参阅文档以获取完整参考
$select->toSQL(); // returns 'SELECT * FROM users' $select->fetchAll(); // returns the rows fetched from the db $select->getStatement(); // get the PDO statement, useful for handling errors $update->execute(); // executes the UPDATE query
支持的语句
-
SELECT
-
UPDATE
-
DELETE FROM
-
INSERT INTO
支持的子句
-
WHERE
-
GROUP BY
-
ORDER BY
-
LIMIT
-
OFFSET
代码示例
$pdo = new PDO(...); $qb = new QueryBuilder($pdo); QueryBuilder::setDefaultFetchMode(PDO::FETCH_ASSOC); // SELECT $res = $qb ->select() ->from('users') ->where('id < 4', 'name = :name') ->orWhere('age < 12') ->orderBy('id', 'desc') ->limit(2) ->offset(1) ->fetchAll(); // INSERT $insert = $qb ->insertInto('articles') ->values(['title' => 'Lorem ipsum', 'content' => 'Some content']) ->getStatement(); $insert->execute(); $insert->errorCode(); // or any other PDOStatement method // UPDATE $updated = $qb ->update('connections') ->set(['exp' => true, 'date' => date('Y-m-d')]) ->where(['token' => $token]) ->orderBy('date') ->limit(1) ->execute(); // DELETE $rowCount = $qb ->deleteFrom('users') ->where('id > 5') ->orWhere('name = :name') ->orderBy('id', 'desc') ->limit(10) ->setParam(':name', 'John') ->rowCount(); // will execute, and return the rowCount
📖 文档
Wiki 正在建设中。 🚧
🙏 致谢
- Vincent Aranega 提供有关代码组织的技巧和窍门