px普贤教程PuXian
普贤教程 › 包参考

querybuilder 包

链式 SQL 构造

项值
包名querybuilder
版本0.2.0
可用版本0.1.0 / 0.2.0
入口querybuilder.px
分类数据库
文件数 / 行数1 / 382

安装与引入

bash
pxpkg init          # 首次
pxpkg add querybuilder@0.2.0
pxpkg install
px
import querybuilder
所属分类教程:数据库

公开接口

函数参数
qb_quote_identname
qb_escapevalue
qb_selecttable
qb_inserttable, data
qb_updatetable, data
qb_deletetable
qb_whereq, column, op, value
qb_where_inq, column, values
qb_where_likeq, column, pattern
qb_order_byq, column, dir = "ASC"
qb_group_byq, column
qb_havingq, column, op, value
qb_limitq, n
qb_offsetq, n
qb_joinq, table, left, right, type = "INNER"
qb_distinctq
qb_buildq
qb_build_paramsq
qb_build_okq
其余 6 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
qb_where_nullq, column
qb_where_not_nullq, column
qb_build_whereswheres
joinarr, sep
qb_pushdst, src
_qb_wheres_paramswheres

包内说明(源码头注释)

text
============================================================
普贤生态库:registry/querybuilder — 链式 SQL 构造
------------------------------------------------------------
纯函数库,双模式一致。

实现要点:
- qb_build(q)          → string,行为不变(内联转义),注释口径改成「内联转义」
- qb_build_params(q)   → [sql, params],值位置一律换成 ?(预处理绑定用这个)
- qb_build_ok(q)       → Ok([sql, params]) | Err(msg)(空表名/空列等前置校验)
- dbal 的对应函数是 db_* 前缀,两包可同文件共存
对齐 PHP query-builder / Laravel Query Builder / Knex.js:
qb_select(table)              → 创建 SELECT 查询
qb_insert(table, data)        → 创建 INSERT 查询
qb_update(table, data)        → 创建 UPDATE 查询
qb_delete(table)              → 创建 DELETE 查询
qb_where(q, column, op, value) → 添加 WHERE 条件
qb_where_in(q, column, values) → WHERE column IN (...)
qb_where_like(q, column, pattern) → WHERE column LIKE pattern
qb_order_by(q, column, dir)   → ORDER BY
qb_group_by(q, column)        → GROUP BY
qb_having(q, column, op, value) → HAVING
qb_limit(q, n)                → LIMIT
qb_offset(q, n)               → OFFSET
qb_join(q, table, left, right, type) → JOIN
qb_distinct(q)                → SELECT DISTINCT
qb_count(q)                   → SELECT COUNT(*)
qb_build(q)                   → 生成 SQL 字符串(值内联转义)
qb_build_params(q)            → [SQL 字符串, 参数列表](值是 ?,预处理绑定用)
qb_quote_ident(name)          → 标识符引号
qb_escape(value)              → 值转义(防 SQL 注入)
============================================================