field
字段参数拼装后会跟在SELECT之后,可以是字符串,也可以是数组或二维混合数组。
┌───────────────────────┬───────────────────────┐
│ 参数类型 │ SQL语句的结果 │
├───────────────────────┼───────────────────────┤
│null │SELECT * │
├───────────────────────┼───────────────────────┤
│'column1,column2' │SELECT column1,column2 │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│array('column1','column2') │SELECT column1,column2 │
├───────────────────────┼───────────────────────┤
│array(null,true,false) │SELECT NULL,1,0 │
├───────────────────────┼───────────────────────┤
│array(array('DISTINCT'),'column1') │SELECT DISTINCT column1 │
├───────────────────────┼───────────────────────┤
│array('c1'=>'column1','c2'=>column2') │SELECT column1 AS c1,column2 AS c2 │
└───────────────────────┴───────────────────────┘
table
表名参数拼装后会跟在FROM之后,可以是字符串,也可以是数组,和字段的格式除默认值以外基本一样。
┌───────────────────────┬───────────────────────┐
│ 参数类型 │ SQL语句的结果 │
├───────────────────────┼───────────────────────┤
│null │ │
├───────────────────────┼───────────────────────┤
│'table1,table2' │FROM table1,table2 │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│array('table1','table2') │FROM table1,table2 │
├───────────────────────┼───────────────────────┤
│array('table1 INNER JOIN table2 USING (id)') │FROM table1 INNER JOIN table2 USING (id) │
├───────────────────────┼───────────────────────┤
│array('t1'=>'table1','t2'=>'table2') │FROM table1 AS t1,table2 AS t2 │
└───────────────────────┴───────────────────────┘
where
条件参数拼装后会跟在WHERE之后,可以是字符串,也可以是无限层的混合数组,具体方法如下。
┌───────────────────────┬───────────────────────┬───────────┐
│ 参数类型 │ SQL语句的结果 │ 占位参数数组值 │
├───────────────────────┼───────────────────────┼───────────┤
│null │ │ │
├───────────────────────┼───────────────────────┼───────────┤
│'c1=1 AND c2>=c3' │WHERE c1=1 AND c2>=c3 │ │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━┥
│array('c1=1','c2>=c3') │WHERE c1=1 AND c2>=c3 │ │
├───────────────────────┼───────────────────────┼───────────┤
│array(array('c1=1','c2>=c3'),'c4=1') │WHERE (c1=1 OR c2>=c3) AND c4=1 │ │
├───────────────────────┼───────────────────────┼───────────┤
│array(array(array('c1=1','c2>=c3'),'c4=1')) │WHERE (c1=1 AND c2>=c3 OR c4=1) │ │
├───────────────────────┼───────────────────────┼───────────┤
│array('c1'=>'s1','c2'=>array('s2','s3')) │WHERE c1=? AND c2 IN (?,?) │array('s1','s2','s3') │
├───────────────────────┼───────────────────────┼───────────┤
│array('c1 LIKE ?'=>'%s%') │WHERE c1 LIKE ? │array('%s%') │
├───────────────────────┼───────────────────────┼───────────┤
│array('c1 BETWEEN ? AND ?'=>array(100,200)) │WHERE c1 BETWEEN ? AND ? │array(100,200) │
└───────────────────────┴───────────────────────┴───────────┘
other
其他参数拼装后会跟在整个SQL语句之后,可以是字符串,也可以是数组或二维混合数组。该参数可以接受page下标的分页指令。
┌───────────────────────┬───────────────────────┬───────────┐
│ 参数类型 │ SQL语句的结果 │ 占位参数数组值 │
├───────────────────────┼───────────────────────┼───────────┤
│null │ │ │
├───────────────────────┼───────────────────────┼───────────┤
│'ORDER BY c1 DESC' │ORDER BY c1 DESC │ │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━┥
│array('GROUP BY c1','HAVING COUNT(c2)>=0') │GROUP BY c1 HAVING COUNT(c2)>=0 │ │
├───────────────────────┼───────────────────────┼───────────┤
│array('ORDER BY'=>'c1','LIMIT'=>array(1,5)) │ORDER BY ?,LIMIT ?,? │array('c1',1,5) │
├───────────────────────┼───────────────────────┼───────────┤
│array('page'=>&$page) │SELECT SQL_CALC_FOUND_ROWS ... LIMIT 20,10 │ │
└───────────────────────┴───────────────────────┴───────────┘
注意:分页符合CPP.PSTC协议标准,SQL语句的结果根据驱动有所不同,上面的表格只显示mysql的合成结果。
上面的例子$page = array ('page'=>3,'size'=>10),没有相应下标的$page = array ('page'=>1,'size'=>1,'count'=>null,'total'=>null);
如果count下标的值不为空值则运行后会得到总条数,而total下标的值运行后会自动计算得到总页数。
struct
这个结构参数定义返回结果的形式。根据需要可以返回值、数组、对象数组或多维数组,返回数组的下标可以是自增也可以是某个字段的值。
┌───────────────────────┬───────────────────────┐
│ 参数类型 │ 返回的结果 │
├───────────────────────┼───────────────────────┤
│空值=array(null, 'class'=>null) │对象数组=array(new static|self, ……) │
├───────────────────────┼───────────────────────┤
│文本=array(null, 'class'=>文本) │对象数组=array(new 文本, ……) │
├───────────────────────┼───────────────────────┤
│对象=array(null, 'clone'=>对象) │对象数组=array(clone 对象, ……) │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│array(……, 空值, ……, 结构) │$return ...[]...=值 │
├───────────────────────┼───────────────────────┤
│array(……, 整数, ……, 结构) │$return ...[对象[整数]]...=值 │
├───────────────────────┼───────────────────────┤
│array(……, 文本, ……, 结构) │$return ...[对象[文本]]...=值 │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│array(……, 空值)=array(……, 'class'=>null) │$return ...=new static|self │
├───────────────────────┼───────────────────────┤
│array(……, 整数)=array(……, 'column'=>整数)│$return ...=数组[整数] │
├───────────────────────┼───────────────────────┤
│array(……, 文本)=array(……, 'column'=>文本)│$return ...=数组[文本] │
├───────────────────────┼───────────────────────┤
│array(……, 对象)=array(……, 'clone'=>对象) │$return ...=clone 对象 │
├───────────────────────┼───────────────────────┤
│array(……, 数组)=array(……, 'array'=>数组) │$return ...=数组 │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│array(……, 'assoc'=>null) │$return ...=array('属性'=>'值', ……) │
├───────────────────────┼───────────────────────┤
│array(……, 'both'=>null) │$return ...=array('属性'=>'值','值', ……) │
├───────────────────────┼───────────────────────┤
│array(……, 'num'=>null) │$return ...=array('值', ……) │
├───────────────────────┼───────────────────────┤
│array(……, 'array'=>数组) │$return ...=数组 │
├───────────────────────┼───────────────────────┤
│array(……, 'column'=>整数) │$return ...=数组[整数] │
├───────────────────────┼───────────────────────┤
│array(……, 'column'=>文本) │$return ...=数组[文本] │
├───────────────────────┼───────────────────────┤
│array(……, 'class'=>空值) │$return ...=new static|self │
├───────────────────────┼───────────────────────┤
│array(……, 'class'=>文本) │$return ...=new 文本|static|self │
├───────────────────────┼───────────────────────┤
│array(……, 'class|classtype'=>文本) │$return ...=new 首个字段|文本|static|self │
├───────────────────────┼───────────────────────┤
│array(……, 'clone'=>对象) │$return ...=clone 对象 │
└───────────────────────┴───────────────────────┘
注1:空值专指null或空串,整数专指非负数整,文本专指非空字符串,static|self表示在PHP 5.3下为静态延时绑定类名,在PHP 5.2下为当前核心模块类名。
注2:最后一个值的下标可以用粘附“|table=文本”来指定表名,如:'class|table=test'=>null表示如果表名参数为空值的话则使用该表名加前缀。未粘附表名的则取类名为作粘附表名。
sql
查询的SQL语句,支持问号形式的占位符。
param
配合SQL语句和占位符对应的参数数组。