sqlbuilder / phpsqlbuilder
php 查询构建器,用于执行不同数据库系统的 SQL 查询。
1.0.0
2023-03-15 22:43 UTC
README
PHP 查询构建器,用于创建和执行不同数据库系统的 SQL 查询。
查询构建器支持 mysql
postgresql
sql server
sqlite
,并提供大量方法来覆盖大多数 SQL 语句,并对数据进行限制和参数化,以验证和过滤用户输入,从而防止 SQL 注入。
通过 composer 安装
composer require sqlbuilder/phpsqlbuilder
示例
require ('vendor/autoload.php'); // Connect to database $sql = new PhpSqlBuilder\SQL([ 'driver' => 'mysql', // support (mysql, pgsql, sqlsrv, sqlite) 'host' => '127.0.0.1', 'database' => 'test', 'user' => 'root', 'password' => '', 'port' => 3306, 'charset' => 'utf8', ]); // Build your SQL Query $result = $sql->table('users') ->select(['id', 'name']) ->where('id')->value('>', 16) ->orderBy('id') ->limit(5) ->get();
可用方法
table
定义数据库表名。
$result = $sql->table('tablename') ->all() ->get();
get
返回一个对象,其中包含 SQL 查询的结果。您必须在查询构建器的末尾调用此方法。
$result = $sql->table('tablename') ->all() ->get();
all
选择所有列。
$result = $sql->table('tablename') ->all() ->get();
select
选择特定列。
$result = $sql->table('tablename') ->select(['col1', 'col2', 'col3']) ->get();
selectTop
选择有限行。(仅支持 sql server)
$result = $sql->table('tablename') ->selectTop(4, ['col1', 'col2']) ->get();
distinct
选择不同的行。
$result = $sql->table('tablename') ->distinct(['col1', 'col2', 'col3']) ->get();
alias
使用别名选择。
$result = $sql->table('tablename') ->alias([ 'column1' => 'alias name', 'column2' => 'alias name' ]) ->get();
聚合函数
使用聚合函数(MAX, MIN, COUNT, SUM, AVG)选择。
$result = $sql->table('tablename') ->count('id') ->max('price', 'unitprice') ->min('price') ->avg('price') ->sum('id') ->get();
where
添加 where 子句以指定条件。
$result = $sql->table('tablename') ->all() ->where('col')->value('=', 5) ->get();
whereNot
在 where 子句中添加 NOT 关键字。
$result = $sql->table('tablename') ->all() ->whereNot('col')->value('<', 5) ->get();
isNull isNotNull
// IS NULL $result = $sql->table('tablename') ->all() ->where('col')->isNull() ->get(); // IS NOT NULL $result = $sql->table('tablename') ->all() ->where('col')->isNotNull() ->get();
like 在之间
// LIKE $result = $sql->table('tablename') ->all() ->where('col')->like('%pattern%') ->get(); // IN $result = $sql->table('tablename') ->all() ->where('col')->in([45, 76, 88]) ->get(); // BETWEEN $result = $sql->table('tablename') ->all() ->where('col')->between(2, 10) ->get();
and or not
这些运算符可以与查询结合使用,以添加多个条件。
// AND $result = $sql->table('tablename') ->all() ->where('col')->value('=', 'value') ->and('col2')->value('=', 'value') ->get(); // OR $result = $sql->table('tablename') ->all() ->where('col')->value('=', 'value') ->or('col2')->value('=', 'value') ->get(); // NOT (does not accept parameters) $result = $sql->table('tablename') ->all() ->where('col')->not()->value('=', 'value') ->get();
joins
// INNER JOIN $result = $sql->table('table1') ->innerJoin('table2', 'table1.column', '=', 'table2.column') ->get(); // LEFT JOIN $result = $sql->table('table1') ->leftJoin('table2', 'table1.column', '=', 'table2.column') ->get(); // RIGHT JOIN $result = $sql->table('table1') ->rightJoin('table2', 'table1.column', '=', 'table2.column') ->get(); // FULL OUTER JOIN $result = $sql->table('table1') ->fullJoin('table2', 'table1.column', '=', 'table2.column') ->get(); // CROSS JOIN (accept 1 string parameter) $result = $sql->table('table1') ->crossJoin('table2') ->get();
limit
检索有限行。
$result = $sql->table('tablename') ->all() ->limit(5) ->get();
union unionAll
用于合并两个表的结果。
// UNION $result = $sql->table('tablename') ->select(['column1', 'column2']) ->union(['column1', 'column2'], 'table2') ->get(); // UNION ALL $result = $sql->table('tablename') ->select(['column1', 'column2']) ->unionAll(['column1', 'column2'], 'table2') ->get();
groupBy
用于将相同的数据排列成组。
$result = $sql->table('tablename') ->select(['col1', 'col2']) ->groupBy(['col1']) ->get();
having
与 GROUP BY 一起使用,以指定条件。
$result = $sql->table('tablename') ->select(['col1', 'col2']) ->groupBy(['col1']) ->having('col1')->value('=', 'value') ->get();
orderBy
用于根据特定列对行进行排序。
$result = $sql->table('tablename') ->all() ->orderBy(['col'], 'ASC') // default DESC ->get();
delete
您必须在插入、更新和删除方法的末尾使用
save()
方法来执行 SQL 查询。
// EX 1 $sql->table('tablename') ->delete() ->where('col')->value('=', 1) ->save(); // execute // EX 2 $sql->table('tablename') ->delete() ->where('col')->in(['val1', 'val2', 'val3']) ->save();
truncate
// EX 1 $sql->table('tablename') ->truncate() ->save();
insert
$sql->table('tablename') ->insert([ 'id' => 84, 'name' => 'ahmed', 'email' => 'ahmed@gmail.com' ])->save();
update
$sql->table('tablename') ->update([ 'name' => 'omar', 'email' => 'omar@gmail.com' ]) ->where('id')->value('=', 88) ->save();