Db
<br/>
>i 本文档的最新修订日期是:
> **2023-01-10**
# Db
## 模块简述
本模块底层通过 <font color="#c7254e">`PDO`</font> 驱动,进行 <font color="#c7254e">`CURD`</font> (增删改查)以及执行自定义SQL语句的操作。
## 依赖
本模块依赖于基础模块 <font color="#c7254e">`Log`</font> 。
## 模块配置
配置文件位于 <font color="#c7254e">`/config/core/Db.php`</font> 。
* **<font color="#ff6600">`log`</font>** <font color="#0099ff">`(Bool)`</font> <font color="#bbbbbb">`FALSE`</font> :
用以指定是否将最终执行的SQL语句以 <font color="#c7254e">`debug`</font> 级别提交到日志缓存中。
<font color="#c7254e">`TRUE`</font> 代表提交到日志、<font color="#c7254e">`FALSE`</font> 代表不提交到日志,默认不提交到日志。
日志缓存是否会被写入日志文件,取决于 <font color="#c7254e">`Log`</font> 模块的相关配置。
* **<font color="#ff6600">`dbInfo`</font>** <font color="#0099ff">`(Array)`</font> <font color="#bbbbbb">`(省略)`</font> :
此配置项为一个二维数组(Array),用以指定数据库信息。在第一维数组中, <font color="#c7254e">`键`</font> 为配置组名称, <font color="#c7254e">`值`</font> 为一个数组,且该数组(即第二维数组)只能有以下六个元素:
1. 键为 <font color="#c7254e">`type`</font> ,值为数据库驱动类型。取值范围可查阅 [PDO驱动列表](https://www.php.net/manual/zh/pdo.drivers.php) 以及 [获取可用的PDO驱动](https://www.php.net/manual/zh/pdo.getavailabledrivers.php) ;
2. 键为 <font color="#c7254e">`address`</font> ,值为数据库地址。如果非远程数据库,请使用默认值 <font color="#c7254e">`localhost`</font> ;
3. 键为 <font color="#c7254e">`username`</font> ,值为数据库用户名;
4. 键为 <font color="#c7254e">`password`</font> ,值为数据库密码;
5. 键为 <font color="#c7254e">`dbname`</font> ,值为数据库名称;
6. 键为 <font color="#c7254e">`port`</font> ,值为数据库端口号。
* **<font color="#ff6600">`default`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`'default'`</font>:
用以指定默认链接的数据库的名称。
值必须为配置项 <font color="#c7254e">`dbInfo`</font> 中第一维数组中任意一个元素的键名。
## 公共参数
### 数据库的指定
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`默认值见方法参数`</font>:
用以指定所操作的数据库的名称。
本参数的值必须为配置项 <font color="#c7254e">`dbInfo`</font> 中第一维数组中任意一个元素的键名。
除 <font color="#c7254e">`choose`</font> 方法外,指定本参数不会影响后续操作所使用的数据库,即如果后续操作未指定本参数,则仍然使用默认的数据库。
### 表的指定
* **<font color="#ff6600">`table(表)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
用以指定所操作的数据表表名。
当本参数为 <font color="#c7254e">`String`</font> 类型时,表示仅操作一个表。
当本参数为 <font color="#c7254e">`Array`</font> 类型时,数组键无需定义,每一个元素的值代表一个需要操作的表。
### WHERE子句
* **<font color="#ff6600">`field(字段)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`NULL`</font>:
用以指定查询条件中的字段。
数组键无需定义,每一个元素的值代表一个限制条件,且元素与参数 <font color="#c7254e">`value`</font> 以及参数 <font color="#c7254e">`condition`</font> (如果传入)中的元素保持相互对应。
>w 如需进行多表操作,可以将传入的字段名设置为 <font color="#c7254e">`<表名>.<字段名>`</font> ,例如 <font color="#c7254e">`student.id`</font> 代表的就是 <font color="#c7254e">`student`</font> 表的 <font color="#c7254e">`id`</font> 字段。
* **<font color="#ff6600">`value(值)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`NULL`</font>:
用以指定查询条件中字段对应的值。
数组键无需定义,每一个元素的值代表一个字段,且元素与参数 <font color="#c7254e">`field`</font> 以及参数 <font color="#c7254e">`condition`</font>(如果传入)中的元素保持相互对应。
* **<font color="#ff6600">`condition(条件)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`'='`</font>:
用以确定参数 <font color="#c7254e">`field`</font> 和参数 <font color="#c7254e">`value`</font> 之间的比较符以及与下一个条件之间的并列关系,以及指定各个条件之间的优先级关系。
当本参数为 <font color="#c7254e">`String`</font> 类型时,表示仅限定一个查询条件。
当本参数为 <font color="#c7254e">`Array`</font> 类型时,数组键 <font color="#c7254e">`无需定义`</font> ,值为 <font color="#c7254e">`比较符[,并列关系]`</font> 的字符串,其中比较符为字段与条件值之间的比较符( <font color="#c7254e">`=`</font> ,<font color="#c7254e">`<>`</font> ,<font color="#c7254e">`>`</font> ,<font color="#c7254e">`>=`</font> ,<font color="#c7254e">`<=`</font> ,<font color="#c7254e">`<>`</font> ,<font color="#c7254e">`LIKE`</font> ,<font color="#c7254e">`NOT LIKE`</font> ),并列关系为与下一个限制条件之间的并列关系( <font color="#c7254e">`and`</font> 或 <font color="#c7254e">`or`</font> ,未被定义时默认值为 <font color="#c7254e">`and`</font> ),并且每一个元素与参数 <font color="#c7254e">`field`</font> 和参数 <font color="#c7254e">`value`</font> 中的元素保持相互对应。
>w 如需进行多表操作,可以将传入的字段名设置为 <font color="#c7254e">`<表名>.<字段名>`</font> ,例如 <font color="#c7254e">`student.id`</font> 代表的就是 <font color="#c7254e">`student`</font> 表的 <font color="#c7254e">`id`</font> 字段。
此外,还可以在多个限定条件中,确定条件(或条件组合)之间的优先级。
即在最终的SQL语句中,框架会根据传入的优先级参数的值,使用括号“()”对查询条件进行优先级的指定,例如
```sql
... where `id` = '1' and ( `level` = 'a' or `class` > '3' ) ...
```
的查询语句。
如需使用此特性,则参数 <font color="#c7254e">`condition`</font> 必须为数组,且数组的每一个元素的值将由 <font color="#c7254e">`String`</font> 类型改变为 <font color="#c7254e">`Array`</font> 类型,且包含两个元素,且数组的键无需定义:
第一个元素的值为 <font color="#c7254e">`比较符[,并列关系]`</font> 的字符串,该字符串的定义方式不再赘述。
第二个元素的值为 <font color="#c7254e">`前置括号[,后置括号]`</font> 的字符串。其中前置括号为添加在该条件前的左括号,可以为0个或多个 <font color="#c7254e">`(`</font> ;后置括号为添加在该条件后、下一个并列关系符前的右括号,可以为0个或多个 <font color="#c7254e">`)`</font> 。
当仅需要添加右括号时,字符串应当定义为 <font color="#c7254e">`,后置括号`</font> ,即起始字符为一个英文逗号。
若要实现上面的SQL语句,那么应该按下面的方式定义这三个参数:
```php
$Field=array('id', 'level', 'class');
$Value=array('1', 'a', '3');
$Condition=array(
'=,and',
array(
'=,or',
'('
),
array(
'>',
',)'
)
);
```
### ORDER BY子句
* **<font color="#ff6600">`order(顺序)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`默认值见方法参数`</font>:
用以指定对结果排序时所依据的字段。
当本参数为 <font color="#c7254e">`String`</font> 类型时,表示仅限定一个排序字段。
当本参数为 <font color="#c7254e">`Array`</font> 类型时,数组键无需定义,每一个元素的值代表一个排序所依据的字段,且元素与参数 <font color="#c7254e">`desc`</font> (如果传入)中的元素保持相互对应。
>w 如需进行多表操作,可以将传入的字段名设置为 <font color="#c7254e">`<表名>.<字段名>`</font> ,例如 <font color="#c7254e">`student.id`</font> 代表的就是 <font color="#c7254e">`student`</font> 表的 <font color="#c7254e">`id`</font> 字段。
* **<font color="#ff6600">`desc(降序)`</font>** <font color="#0099ff">`(Bool | Array)`</font> <font color="#BBBBBB">`FALSE`</font>:
用以指定是否使用倒序的排序方式。
当本参数为 <font color="#c7254e">`Bool`</font> 类型时,则指定所有字段的排序方式,<font color="#c7254e">`TRUE`</font> 代表倒序、<font color="#c7254e">`FALSE`</font> 代表正序,默认倒序。
当本参数为 <font color="#c7254e">`Array`</font> 类型时,数组键无需定义,每一个元素的值为一个字段排序所依据的方式,且元素与参数 <font color="#c7254e">`order`</font> 中的元素保持相互对应。
例如,将结果按照字段 <font color="#c7254e">`id`</font> 正序排序,并且按照 <font color="#c7254e">`money`</font> 倒序排序:
```php
$Order=array('id','money');
$Desc=array(FALSE,TRUE);
```
>w 如需进行多表操作,可以将传入的字段名设置为 <font color="#c7254e">`<表名>.<字段名>`</font> ,例如 <font color="#c7254e">`student.id`</font> 代表的就是 <font color="#c7254e">`student`</font> 表的 <font color="#c7254e">`id`</font> 字段。
### 更多子句
* **<font color="#ff6600">`limit(限制)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`NULL`</font>:
用以从 <font color="#c7254e">`位置偏移量`</font> 为起始行取得 <font color="#c7254e">`指定行数`</font> 的记录。
数组的键无需定义,当数组仅存在一个元素时,此元素定义 <font color="#c7254e">`行数`</font> ,此时位置偏移量 <font color="#c7254e">`默认为0`</font> ;当数组存在两个元素时,第一个元素定义 <font color="#c7254e">`位置偏移量`</font> ,第二个元素定义 <font color="#c7254e">`行数`</font> 。
例如,从结果中的第3行开始取15行:
```php
$Limit=array(2,15);
//偏移量从0开始计算。
```
>w 如果希望 <font color="#c7254e">`行数`</font> 为查询结果的最大数量,请将值设置为 <font color="#c7254e">`-1`</font> 。
* **<font color="#ff6600">`index(索引)`</font>** <font color="#0099ff">`(Int)`</font> <font color="#BBBBBB">`NULL`</font>:
用以指定执行操作时使用的索引。
* **<font color="#ff6600">`group_by(分组)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
用以指定对结果分组时所依据的字段。
当本参数为 <font color="#c7254e">`String`</font> 类型时,表示仅指定一个分组依据的字段。
当本参数为 <font color="#c7254e">`Array`</font> 类型时,数组键无需定义,每一个元素的值代表一个排序所依据的字段。
>w 如需进行多表操作,可以将传入的字段名设置为 <font color="#c7254e">`<表名>.<字段名>`</font> ,例如 <font color="#c7254e">`student.id`</font> 代表的就是 <font color="#c7254e">`student`</font> 表的 <font color="#c7254e">`id`</font> 字段。
* **<font color="#ff6600">`field_limit(字段限制)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`*`</font>:
用以指定取回结果的字段范围。
当本参数为 <font color="#c7254e">`String`</font> 类型时,表示仅指定一个取回的字段。
当本参数为 <font color="#c7254e">`Array`</font> 类型时,数组键无需定义,每一个元素的值代表一个需要取回的字段。
<font color="#c7254e">`*`</font> 代表取回所有字段。
>w 如需进行多表操作,可以将传入的字段名设置为 <font color="#c7254e">`<表名>.<字段名>`</font> ,例如 <font color="#c7254e">`student.id`</font> 代表的就是 <font color="#c7254e">`student`</font> 表的 <font color="#c7254e">`id`</font> 字段。
* **<font color="#ff6600">`data(数据)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`默认值见方法参数`</font>:
用以指定需要插入或更新的数据。
本参数中 <font color="#c7254e">`键`</font> 为字段名, <font color="#c7254e">`值`</font> 为字段名所对应的值。
>w 如需进行多表操作,可以将传入的字段名设置为 <font color="#c7254e">`<表名>.<字段名>`</font> ,例如 <font color="#c7254e">`student.id`</font> 代表的就是 <font color="#c7254e">`student`</font> 表的 <font color="#c7254e">`id`</font> 字段。
### 自定义SQL语句
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
附加在 <font color="#c7254e">`WHERE子句`</font> 后的自定义SQL语句。
如需进行参数绑定,请在字段名前加上 <font color="#c7254e">`:`</font> 字符。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
用于指定在自定义的SQL语句中进行PDO参数绑定。
本参数中 <font color="#c7254e">`键`</font> 为字段名(字段名无需 <font color="#c7254e">`:`</font> 前缀), <font color="#c7254e">`值`</font> 为字段名所对应的值。
>w 从安全的角度,强烈建议通过 <font color="#c7254e">`参数绑定`</font> 避免注入风险。
### 其它参数
* **<font color="#ff6600">`row_count(行数统计)`</font>** <font color="#0099ff">`(Bool)`</font> <font color="#BBBBBB">`FALSE`</font>:
是否统计数据库中受到操作执行影响的行数。当值为 <font color="#c7254e">`TRUE`</font> 时统计,值为 <font color="#c7254e">`FALSE`</font> 时不统计。
## :: choose()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">choose</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
在预配置的多个数据库中选择一个数据库。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
此方法会替代配置文件中 <font color="#c7254e">`default`</font> 配置项的值,从而影响后续操作在未指定数据库情况下,所使用的默认数据库。
### 参数
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
无。
## :: select()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">select</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
查询单条数据表记录。
本方法相比于 <font color="#c7254e">`SelectMore`</font> 方法,更适合于例如查询用户信息这样单一的数据,性能更优异。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`table(表)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`field(字段)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`value(值)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`condition(条件)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`'='`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`order(顺序)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`desc(降序)`</font>** <font color="#0099ff">`(Bool | Array)`</font> <font color="#BBBBBB">`FALSE`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`index(索引)`</font>** <font color="#0099ff">`(Int)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`field_limit(字段限制)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`*`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`''`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
<font color="#0099ff">`(Array)`</font> 类型。
查询到记录时,返回值为一个数组,记录的每一个字段为一个 <font color="#c7254e">`键`</font> ,每一个记录值为一个数组的 <font color="#c7254e">`值`</font> ,且数组中键值的对应关系与记录中字段和记录值的对应关系相同。
当查询到的记录为空时,返回值为一个 <font color="#c7254e">`空数组`</font> 。
## :: selectMore()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">selectMore</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
查询多条数据表记录。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`table(表)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`field(字段)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`value(值)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`condition(条件)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`'='`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`order(顺序)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`desc(降序)`</font>** <font color="#0099ff">`(Bool | Array)`</font> <font color="#BBBBBB">`FALSE`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`limit(限制)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`index(索引)`</font>** <font color="#0099ff">`(Int)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`field_limit(字段限制)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`*`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`group_by(分组)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`''`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
<font color="#0099ff">`(Array)`</font> 类型。
查询到记录时,返回值为 <font color="#c7254e">`二维数组`</font> ,在第一维的数组中,键为从 <font color="#c7254e">`0`</font> 开始的自增键,值为一行记录的集合的一维数组;在第二维数组中, <font color="#c7254e">`键`</font> 为字段名, <font color="#c7254e">`值`</font> 为该条记录中字段所对应的记录值。
当查询到的记录为空时,返回值为一个 <font color="#c7254e">`空数组`</font> 。
## :: total()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">total</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
统计符合条件的记录数量。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`table(表)`</font>** <font color="#0099ff">`(Int)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`field(字段)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`value(值)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`condition(条件)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`'='`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`order(顺序)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`'Total'`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`desc(降序)`</font>** <font color="#0099ff">`(Bool | Array)`</font> <font color="#BBBBBB">`FALSE`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`limit(限制)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`index(索引)`</font>** <font color="#0099ff">`(Int)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`group_by(分组)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`''`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
<font color="#0099ff">`(Array)`</font> 类型。
当未指定 <font color="#c7254e">`group_by`</font> 参数时,将直接返回符合条件的记录总数;否则将返回依据 <font color="#c7254e">`group_by`</font> 参数分组而形成的结果集。
## :: sum()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">sum</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
对符合条件的指定列的记录值进行累加,并将结果放在一行中。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`table(表)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`field(字段)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`value(值)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`condition(条件)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`'='`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`order(顺序)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`desc(降序)`</font>** <font color="#0099ff">`(Bool | Array)`</font> <font color="#BBBBBB">`FALSE`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`limit(限制)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`index(索引)`</font>** <font color="#0099ff">`(Int)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`sum(合计)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
用以指定对结果分组时所依据的字段。
每一个元素的键代表一个需要累加的字段,值代表该字段在结果中的字段别名。
>w 如需进行多表操作,可以将传入的字段名设置为 <font color="#c7254e">`<表名>.<字段名>`</font> ,例如 <font color="#c7254e">`student.id`</font> 代表的就是 <font color="#c7254e">`student`</font> 表的 <font color="#c7254e">`id`</font> 字段。
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`''`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
<font color="#0099ff">`(Array)`</font> 类型。
将返回结果集。
## :: insert()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">insert</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
插入数据,并返回新记录的主键。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`table(表)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`data(数据)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`''`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
<font color="#0099ff">`(Int)`</font> 类型。
值为插入成功后该行记录的主键。
## :: delete()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">delete</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
删除符合条件的记录。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`table(表)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`field(字段)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`value(值)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`condition(条件)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`'='`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`order(顺序)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`desc(降序)`</font>** <font color="#0099ff">`(Bool | Array)`</font> <font color="#BBBBBB">`FALSE`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`limit(限制)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`index(索引)`</font>** <font color="#0099ff">`(Int)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`row_count(行数统计)`</font>** <font color="#0099ff">`(Bool)`</font> <font color="#BBBBBB">`FALSE`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`''`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
<font color="#0099ff">`(NULL|Int)`</font> 类型。
返回 <font color="#c7254e">`NULL`</font> 或受到影响的行数。
## :: update()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">update</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
更新符合条件的记录。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`table(表)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`<必须>`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`field(字段)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`value(值)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`condition(条件)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`'='`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`order(顺序)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`desc(降序)`</font>** <font color="#0099ff">`(Bool | Array)`</font> <font color="#BBBBBB">`FALSE`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`limit(限制)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`index(索引)`</font>** <font color="#0099ff">`(Int)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`data(数据)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`默认值见方法参数`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`auto_operate(自动操作)`</font>** <font color="#0099ff">`(String | Array)`</font> <font color="#BBBBBB">`NULL`</font>:
用以指定自动更新的方式。
例如 <font color="#c7254e">`+1`</font> 则会使指定的字段值自动+1,详见数据库对应的官方手册。
键无需定义,值为表达式,并且每一个元素与参数 <font color="#c7254e">`data`</font> 中的元素保持 <font color="#c7254e">`相互对应`</font> 。
* **<font color="#ff6600">`row_count(行数统计)`</font>** <font color="#0099ff">`(Bool)`</font> <font color="#BBBBBB">`FALSE`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`''`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
<font color="#0099ff">`(NULL|Int)`</font> 类型。
返回 <font color="#c7254e">`NULL`</font> 或受到影响的行数。
## :: other()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">other</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
执行自定义的SQL语句。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`sql(sql)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`NULL`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`fetch_result(取回结果)`</font>** <font color="#0099ff">`(Bool)`</font> <font color="#BBBBBB">`FALSE`</font>:
用以指定是否取回结果集。当值为 <font color="#c7254e">`FALSE`</font> 时,将返回 <font color="#c7254e">`NULL`</font> ;当值为 <font color="#c7254e">`TRUE`</font> 时,将以 <font color="#c7254e">`PDO::FETCH_ASSOC`</font> 方式取回数据集,返回一个数组。
* **<font color="#ff6600">`bind(绑定)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
* **<font color="#ff6600">`db_name(数据库)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`''`</font>:
详见本模块 <font color="#c7254e">`公共参数`</font> 部分的说明。
### 返回
<font color="#0099ff">`(NULL | Array)`</font> 类型。
<font color="#c7254e">`NULL`</font> 或不含任何元素的空数组。
## :: acid()方法
### 语法
**<font color="#0099ff"><font color="#ff6600">Db</font> :: <font color="#ff6600">acid</font> ( <kbd>传参数组</kbd> )</font>**
### 说明
进行事务操作。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
### 参数
* **<font color="#ff6600">`option(操作)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`<必须>`</font>:
用以指定执行的事务操作类型。
当值为 <font color="#c7254e">`begin`</font> 时代表开始事务;值为 <font color="#c7254e">`commit`</font> 时代表提交事务;值为 <font color="#c7254e">`cancel`</font> 时代表回滚事务。
### 返回
<font color="#0099ff">`(Bool)`</font> 类型。
返回的值为 <font color="#c7254e">`TRUE`</font> 时代表操作成功,值为 <font color="#c7254e">`FALSE`</font> 时代表操作失败。