jbzoo/sqlbuilder
最新稳定版本:1.1.4
Composer 安装命令:
composer require jbzoo/sqlbuilder
包简介
Simple SQL query constructor
关键字:
README 文档
README
PHP library description
Init builder
use JBZoo\SqlBuilder\SqlBuilder;
// composer autoload.php
require_once './vendor/autoload.php';
// register database database type, connection and table prefix (if exists)
$connection = mysqli_connect('127.0.0.1', 'root', '', 'sqlbuilder', '3306');
SqlBuilder::set('mysqli', $connection, 'prefix_');
SELECT queries
use JBZoo\SqlBuilder\Query\Select;
echo (new Select('table', 'tTable')); // or __toString() method
SELECT * FROM `table` AS `tTable`
Simple SELECT query
$select = (new Select('#__items', 'tItem'))
->select('tItem.item_id', 'id')
->leftJoin(['#__categories', 'tCategory'], 'tCategory.id = tItem.category_id')
->where(['tItem.name', ' = ?s'], "O'Realy")
->where('tItem.name IN ?a', ['42', '43', '44'])
->group('tItem.author')
->order('tItem', 'desc')
->limit(5, 10);
SELECT `tItem`.`item_id` FROM `prefix_items` AS `tItem` LEFT JOIN `prefix_categories` AS `tCategory` ON (tCategory.id = tItem.category_id) WHERE `tItem`.`name` = 'O\'Realy' AND tItem.name IN ('42', '43', '44') GROUP BY `tItem`.`author` ORDER BY `tItem` DESC LIMIT 10, 5
Flexible and safe WHERE conditions
$select = (new Select(['items', 'tAlias']))
->where("prop = 'O\\'Realy'") // old school
->where('prop = ?s', "O'Realy") // escape string
->where(['prop', '= ?s'], "O'Realy", 'or') // quote field
->whereOR(['tAlias.prop', '=', '?s'], "O'Realy"); // more syntax suger :)
SELECT * FROM `items`AS `tAlias` WHERE prop = 'O\'Realy' AND prop = 'O\'Realy' OR `prop` = 'O\'Realy' OR `tAlias`.`prop` = 'O\'Realy'
Escaping other variable types
$select = (new Select(['items', 'tAlias']))
->where('prop <> ?e', 'tAlias.col') // entities
->where('prop < ?i', ' -10,56 ') // integer
->where('prop > ?f', ' -10,56 ') // float
->where('prop = ?b', 1) // bool TRUE
->where('prop <> ?b', 0) // and FALSE
->where('prop ?n', 0) // IS [NOT] NULL
->where('prop IN ?a', [null, '1', "'qwerty'"]); // array
SELECT * FROM `items` AS `tAlias` WHERE prop <> `tAlias`.`col` AND prop < -10 AND prop > -10.56 AND prop = TRUE AND prop <> FALSE AND prop IS NULL AND prop IN (NULL, '1', '\'qwerty\'')
WHERE groups
$select = (new Select(['items', 'tAlias']))
->whereGroup([
['tAlias.prop > ?i', 42],
[['tAlias.prop', '< ?i'], 4242],
])
->whereGroup([
['prop NOT IN ?a', [0, 1, null, 'Some string']],
['prop ?n', 0],
], 'OR');
SELECT * FROM `items` AS `tAlias` WHERE ( tAlias.prop > 42 AND `tAlias`.`prop` < 4242 ) OR ( prop NOT IN ('0', '1', NULL, 'Some string') AND prop IS NULL )
Other queries
- Delete
- Insert
- Replace
- Union
- Update
License
MIT
jbzoo/sqlbuilder 适用场景与选型建议
jbzoo/sqlbuilder 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.59k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2015 年 10 月 10 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「sql」 「mysql」 「builder」 「SQL Builder」 「jbzoo」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 jbzoo/sqlbuilder 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jbzoo/sqlbuilder 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 jbzoo/sqlbuilder 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
Query filtering in your frontend
A Sphinx Query Builder extension for the Laravel Database package
Anax Database Active Record module for model classes.
Database/ORM-agnostic query construction helper
A simple package to create tables in Discord messages.
统计信息
- 总下载量: 2.59k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 19
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-10-10