一.使用字符串作為條件查詢
在 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());
這時使用調試工具在瀏覽器中看到的是:
這時使用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'); 查詢用戶名中帶有“小”和"臘"的數據,這時后面加了AND,如果不加的話,默認的就是OR.
下面是between的用法:
$map['id'] = array('between','1,3'); 查詢'id'在1到3之間的數據,
$map['id'] = array('between',array('1','3')); 和上一句作用相同,
$map['id'] = array('not between','1,3'); 查詢除了'id'不等于1到3之間的數據,這時not和between之間用空格,之前的notlike之間沒空格
下面是in的用法:
$map['id'] = array('in','1,2,4'); 查詢id為1,2,4的數據;
$map['id'] = array('not in','1,2,4'); 查詢id不等于1,2,3的數據,且這時not和in之間也是有空格
EXP:自定義: (PS:使用 exp 自定義在第二個參數直接寫 where 語句即可)
$map['id']=array('exp','=1'); 查詢id等于1的數據
$map['id'] = array('exp','in (1,2,4)'); 查詢id為1,2,4的數據;
$map['id'] = array('exp', '=1'); $map['user'] = array('exp', '="蠟筆小新"'); $map['_logic'] = 'OR'; //WHERE 為( (`id` =1) ) OR ( (`user` ="蠟筆小新") )
文章列表