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> 时代表操作失败。