ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### where查询条件 查询在数据库操作是非常常见,构造查询sql语句的条件也是经常要处理的工作,如何快速提高查询效率是本节的重心。查询条件的构造分为两类,1.字符串方式和2.数组方式,这两种方式只能选取一种,后面使用的方式将会覆盖前面的使用方式。 #### 1. 字符串查询条件 字符串查询条件可以根据用户需要构造各种查询条件,是数组查询方式的补充,支持参数绑定,防止sql注入。 不绑定参数: ~~~ $model=new Model('user'); $where="name like '%张%'" //和原生的sql无差 $model->where($where)->select(); ~~~ 绑定参数: ~~~ $model=new Model('user'); $where="name like :name" $model->where($where)->bind([':name'=>'%张%'])->select(); ~~~ #### 2. 数组查询条件 数组查询方式使用数组来构造查询条件,查询条件中的比较运算符和sql语句中比较运算符一致。该方式都是使用参数绑定,所以可以认为是安全的。 **查询格式:** 1. '字段名' => '值',与 '字段名' => ['=', '值'] 等价 2. '字段名' => ['条件', '值'] 3. '字段名' => [['条件1', '值1'],['条件2', '值2']] *注:其中条件对应sql语句中比较运算符,如=,!=,like,in,not in,>=,<=,>.<等等。* **多层逻辑:** 支持与逻辑和或逻辑的嵌套,通过_logic关键词指定关系,默认为AND 1. 同字段名:'字段名' => [['条件1', '值'],['条件2','值'],'_logic'=>'and'] 2. 不同字段名:[ '字段名' => ['条件', '值'], '字段名' => ['条件', '值'] ] ~~~ 参考格式 $where = [ '字段名1' => '值',//字段名1=值 '字段名2' => ['=', '值'],//字段名2=值,这两种情况适合大多数情况 '字段名3' => [['>=', '值'],['<=','值'],'_logic'=>'and'],//同一个字段名,多个条件 '_logic' => 'and'//选填AND|OR ]; 3. $where = [ [ //当该数组的键值为数值时,需要把该条件用()包起来,作为一个子条件使用 '字段名1' => '值',//字段名1=值 '字段名2' => ['=', '值'],//字段名2=值,这两种情况适合大多数情况 '_logic' => 'and'//选填 ], [ '字段名1' => '值',//字段名1=值 '字段名2' => ['=', '值'],//字段名2=值,这两种情况适合大多数情况 '_logic' => 'and'//选填 ], '_logic'=>'and' ]; ~~~