mvcbox/sql-query

此包已被废弃,不再维护。未建议替代包。

查询构建器

dev-master / 0.1.x-dev 2016-07-15 06:12 UTC

This package is not auto-updated.

Last update: 2018-07-03 08:43:52 UTC


README

SqlQuery - 简单的查询构造器。要求的PHP版本:5.3+

注意!描述不完整,将逐步补充。

安装

  • 下载库的最新版本: https://github.com/mvcbox/sql-query/archive/master.zip
  • 将存档内容解压到您的项目目录。
  • 打开文件 connection.config.php 并指定您的连接数据。对于MySQL,需要指定:username、password、host、dbname。在其他情况下,通常可以不做更改。
  • 在您需要与数据库交互的脚本中,"引入"文件 function.qb.php
require_once 'Путь к файлу function.qb.php';

现在您可以使用 qb() 函数了。库已准备好使用。

插入

向表中添加一个记录
qb()->table('table_name')->insert(array(
  'column1' => 'value1',
  'column2' => 'value2',
  'column3' => 'value3'
));
向表中添加多个记录
qb()->table('table_name')->insert(array(
  array(
    'column1' => 'value1',
    'column2' => 'value2',
    'column3' => 'value3'
  ),
  array(
    'column1' => 'value4',
    'column2' => 'value5',
    'column3' => 'value6'
  ),
  array(
    'column1' => 'value7',
    'column2' => 'value8',
    'column3' => 'value9'
  )
), true);

更新

为所有记录设置 column 字段的新值
qb()->table('table_name')->update(array(
  'column' => 'New value'
));
更新 id 等于 123 的记录的 column 字段的值
qb()->table('table_name')->where(array(
    'id' => 123
))->update(array(
    'column' => 'New value'
));
更新 id 为 123、456 和 789 的记录的 column 字段的值
qb()->table('table_name')->where(array(
    'id' => array(123, 456, 789)
))->update(array(
    'column' => 'New value'
));
更新除 id 为 777 的记录外所有记录的 column 字段的值
qb()->table('table_name')->where(array(
    array('id', '<>', 777)
))->update(array(
    'column' => 'New value'
));

删除

删除表中的所有记录
qb()->table('table_name')->delete();
删除具有特定 id 的记录
qb()->table('table_name')->where(array('id' => 123))->delete();

截断

清空表
qb()->table('table_name')->truncate();

选择

获取所有表 'table_name' 的记录
$result = qb()->table('table_name')->all();
获取表 table_name 的第一条记录
$result = qb()->table('table_name')->one();
获取 $limit 条记录,跳过前 $offset 条记录,对于表 table_name。limit 和 offset 可以单独使用
$result = qb()->table('table_name')->limit($limit)->offset($offset)->all();
条件查询。获取所有表 table_name 的记录,其中 email 字段等于 email@site.com
$result = qb()->table('table_name')->where(array(
  'email' => 'email@site.com'
))->all();
获取所有表 table_name 的记录,其中 email 字段等于 email1@site.comemail2@site.comemail3@site.com
$result = qb()->table('table_name')->where(array(
  'email' => array(
    'email1@site.com',
    'email2@site.com',
    'email3@site.com'
  )
))->all();
获取所有表 table_name 的记录,其中 username 等于 testuser,email 等于 email@site.com,role 等于 1、2 或 3,且 status 不等于 0
$result = qb()->table('table_name')->where(array(
  'username'  => 'testuser',
  'email'     => 'email@site.com',
  'role'      => array(1, 2, 3),
  array('status', '<>', 0)
))->all();
选择记录的仅限于字段 id 和 username
$result = qb()->table('table_name')->select(array('id', 'username'))->all();
选择记录的仅限于字段 id 和 username。对于 username 使用别名 login
$result = qb()->table('table_name')->select(array('id', 'login' => 'username'))->all();
获取表 'table_name' 的所有记录。对于表 'table_name' 设置别名为 't1'
$result = qb()->table(array('t1' => 'table_name'))->all();
INNER JOIN
$result = qb()->table(array('t1' => 'table_name_1'))->iJoin(
  array('t2' => 'table_name_2'), 
  'field_name_2', 
  'field_name_1'
)->all();

$result = qb()->table(array('t1' => 'table_name_1'))->iJoin(
  array('t2' => 'table_name_2'), 
  't2.field_name_2', 
  't1.field_name_1'
)->all();
INNER JOIN - 多个条件
$result = qb()->table(array('t1' => 'table_name_1'))->iJoin(
  array('t2' => 'table_name_2'), 
  array(
    'field_name_2_1' => 'field_name_1_1',
    'field_name_2_2' => 'field_name_1_2'
  )
)->all();

$result = qb()->table(array('t1' => 'table_name_1'))->iJoin(
  array('t2' => 'table_name_2'), 
  array(
    't2.field_name_2_1' => 't1.field_name_1_1',
    't2.field_name_2_2' => 't1.field_name_1_2'
  )
)->all();

$result = qb()->table(array('t1' => 'table_name_1'))->iJoin(
  array('t2' => 'table_name_2'), 
  array(
    array('field_name_2_1', 'field_name_1_1'),
    array('field_name_2_2', 'field_name_1_2')
  )
)->all();

$result = qb()->table(array('t1' => 'table_name_1'))->iJoin(
  array('t2' => 'table_name_2'), 
  array(
    array('t2.field_name_2_1', 't1.field_name_1_1'),
    array('t2.field_name_2_2', 't1.field_name_1_2')
  )
)->all();