montyhusor / pqbuilder
一个简单的MySQL PHP查询构建器,旨在简化Web开发中的数据库交互
v0.5.2
2024-04-10 01:47 UTC
Requires
- php: >=8.2.4
README
PQbuilder 是一个为MySQL设计的PHP查询构建库,使开发者能够通过链式调用的方式构建SQL查询。 PQbuilder是一个为MySQL设计的PHP查询构建库,允许开发者通过链式调用的方式构建SQL查询。
主要特性
- 基本CRUD操作 - Basic CRUD Operations:支持SELECT、INSERT、UPDATE、DELETE查询。- 支持 SELECT、INSERT、UPDATE 和 DELETE 查询。
- 链式调用 - Chainable Calls:支持链式调用。- 支持 链式调用。
- 自动参数绑定 - Automatic Parameter Binding:减少SQL注入的风险。- 减少SQL注入风险。
- 条件构建 - Condition Building:支持
IN
语句、嵌套逻辑和复杂条件构建。- 支持IN
语句、嵌套逻辑和复杂条件构建。 - 事务处理 - Transaction Management:提供事务开始、提交和回滚的方法。- 提供事务开始、提交和回滚方法。
- 数据抓取方法 - Data Fetching Methods:提供
qfetchAll
、qfetchF
、qfetchColumn
、qfetchObject
方法。- 提供qfetchAll
、qfetchF
、qfetchColumn
和qfetchObject
方法。
安装 - Installation
使用Composer进行安装:
composer require montyhusor/pqbuilder
示例 - Examples
插入 - INSERT
use PQbuilder\Factory as op; use PQbuilder\Executor; $config = [ "host" => "host", "db" => "database", "user" => "username", "pass" => "password", "options" => [], ]; $eor = new Executor($config); $insert = op::qinsert("testTable_library") ->columns(["userID", "borrower", "bookname"]) ->values(["10001", "A1", "phpMyAdmin Starter"]) ->values(["10002", "A2", "PHP is Standing Tall"]); $eor->qexecute($insert); echo "Affected rows: " . $eor->qrowCount();
更新 - UPDATE
use PQbuilder\Factory as op; use PQbuilder\Executor; $eor = new Executor($config); $update = op::qupdate("testTable_library") ->set("bookname", "PHP Cookbook") ->where("borrower", "=", "A1"); $eor->qexecute($update); echo "Affected rows: " . $eor->qrowCount();
删除 - DELETE
use PQbuilder\Factory as op; use PQbuilder\Executor; $eor = new Executor($config); $delete = op::qdelete("testTable_library") ->where("bookname", "=", "PHP Cookbook"); $eor->qexecute($delete); echo "Affected rows: " . $eor->qrowCount();
查询 - SELECT
use PQbuilder\Factory as op; use PQbuilder\Executor; $eor = new Executor($config); $select = op::qselect(["id", "userID", "borrower", "bookname"], "testTable_library") ->where("userID", "IN", [10001, 10002, 10003]); // 获取所有记录 $records = $eor->qfetchAll($select); // 获取第一条记录 $firstRecord = $eor->qfetchF($select); // 获取单列的第一个值 $ColumnfirstV = $eor->qfetchColumn($select, 3);
使用pa()
和endPa()
进行嵌套逻辑的查询 - 使用pa()
和endPa()
进行嵌套逻辑查询
use PQbuilder\Factory as op; use PQbuilder\Executor; $eor = new Executor($config); $select = op::qselect(["id", "userID", "borrower", "bookname"], "testTable_library") ->where("userID", "=", 10002) ->pa() ->where("bookname", "=", "PHP Cookbook") ->orWhere("bookname", "=", "PHP is Standing Tall") ->endPa(); $records = $eor->qfetchAll($select);
使用qfetchObject
获取记录作为对象 - 使用qfetchObject
获取记录作为对象
定义Book类:
class Book { public $bookname; public $greeting; public function __construct($greeting = "Hi") { $this->greeting = $greeting; } public function intro() { return $this->greeting . " This book is called 《" . $this->bookname . "》"; } }
获取Book对象:
use PQbuilder\Factory as op; use PQbuilder\Executor; $eor = new Executor($config); $selectBook = op::qselect(["bookname"], "testTable_library"); $bookObject = $eor->qfetchObject($selectBook, Book::class, ["Welcome to the library!"]); echo $bookObject->intro();
使用groupBy()
, orderBy()
, having()
, limit()
- 使用groupBy()
、orderBy()
、having()
、limit()
use PQbuilder\Factory as op; use PQbuilder\Executor; $eor = new Executor($config); $selectX = op::qselect( ["bookname", "COUNT(id) AS count"], "testTable_library" ) ->groupBy(["bookname"]) ->having("COUNT(id)", ">", 1) ->orderBy("count", "DESC") ->limit(3); $records = $eor->qfetchAll($selectX); echo "<pre>"; print_r($records);
注意事项 - Considerations
- 在构建DELETE和UPDATE查询时,请确保不在没有明确条件的情况下直接使用
pa()
和endPa()
,以防止执行无条件的全表操作并导致数据丢失。 - 当开始一个新的逻辑组合时,使用的第一个
where()
和orWhere()
方法都会产生相同的效果。因此,在开始新的逻辑组合时直接使用where就行。 - 类似地,对于
pa()
方法,当你开始一个新的条件组合时,无论是pa()
还是pa("OR")
,如果它是第一个使用的,那么效果是相同的,因为它标志着一个新的逻辑分支的开始。 - 请注意,虽然
PQbuilder
旨在简化SQL查询构建过程,并提供了基础的CRUD操作及一些高级功能,但它并不覆盖所有的SQL查询操作以及一些更复杂的数据库操作,PQbuilder
还有待完善。
- 当构建DELETE和UPDATE查询时,请确保不在没有明确条件的情况下直接使用
pa()
和endPa()
,以防止执行无条件的全表操作并导致数据丢失。- 当开始一个新的逻辑组合时,使用的第一个
where()
和orWhere()
方法都会产生相同的效果。因此,在开始新的逻辑组合时直接使用where
即可。- 请注意,虽然
PQbuilder
旨在简化SQL查询构建过程,提供基本的CRUD操作和一些高级功能,但它并不涵盖所有SQL查询操作或一些更复杂的数据库交互。PQbuilder
仍处于开发中。