一.使用字符串作为条件查询

在 Home/controller/UserController.class.php



<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model;

class UserController extends Controller {
   
    public function model() {
        $user = M('User');
        var_dump($user->where('id=1')->select());       
    }
}



这是最基本的调用方法,更详细点则是



var_dump($user->where('id=1 and user = "蜡笔小新"')->select());



二、下面介绍数组查询方法

就是将 var_dump($user->where('id=1')->select());



$condition['id']=1;
   $condition['user']="蜡笔小新";
   var_dump($user->where($condition)->select());



这时使用调试工具在浏览器中看到的是:

qsqldatabase 查询postgresql 数组类型数据 sql语句数组查询_php

这时使用where默认的是ADN,如果想换成OR的话,再加上一条语句即可:



$condition['_logic']='or';



三、使用对象查询

同样将 var_dump($user->where('id=1')->select());



$condition = new \stdClass();
$condition->id=1;
$condition->user = '蜡笔小新';



PS:stdClass 类是 PHP 内置的类,可以理解为一个空类,在这里可以理解为把条件的
字段作为成员保存到 stdClass 类里。而这里的'\'是将命名空间设置为根目录,否则会导
致当前目录找不到此类。使用对象和数组查询,效果是一样的,可以互换。在大多数情况下,
ThinkPHP 推荐使用数组形式更加高效。


 

下面介绍表达式查询

  对于那些要实现模糊判断的查询,比如大于、等于、小于之类的SQL查询,可以使用表达式查询方式。
  查询表达式格式:$map['字段名'] = array('表达式','查询条件');

                    表达式查询

表达式 

含义

EQ

等于(=)

NEQ 

不等于(<>)

GT

大于(>)

EGT

大于等于(>=)

LT 

小于(<)

ELT 

小于等于(<=)

[NOT]LIKE 

模糊查询

[NOT] BETWEEN 

(不在)区间查询

[NOT] IN 

(不在)IN查询

EXP 

表达式查询,支持SQL语法

在 Home/controller/UserController.class.php



$user = M('User');
$map['id'] = array('eq',1);
var_dump($user->where($map)->select());



查询id=1的数据;

从EQ到ELT的只需要改变array('eq',1)中的eq就行,

这是like 模糊查询的方式:

$map['user'] = array('like','%小%');

$map['user'] = array('notlike','%小%');

$map['user'] = array('like', array('%小%', '%蜡%'), 'AND');

下面是between的用法:

$map['id'] = array('between','1,3');

$map['id'] = array('between',array('1','3'));

$map['id'] = array('not between','1,3');

下面是in的用法:

$map['id'] = array('in','1,2,4');

$map['id'] = array('not in','1,2,4');

EXP:自定义:   (PS:使用 exp 自定义在第二个参数直接写 where 语句即可)

$map['id']=array('exp','=1');

$map['id'] = array('exp','in (1,2,4)');



$map['id'] =  array('exp', '=1');
$map['user'] =  array('exp', '="蜡笔小新"');
$map['_logic'] = 'OR';
//WHERE 为( (`id` =1) ) OR ( (`user` ="蜡笔小新") )