ludal/mysql-querybuilder

一个用于简单MySQL查询的PHP查询构建器

v0.5.2 2021-10-26 16:53 UTC

This package is auto-updated.

Last update: 2024-09-29 05:36:33 UTC


README

PHPUnit Version PHP Version License Codacy Badge

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 正在建设中。 🚧

🙏 致谢