這裡主要通過舉例來說明用法:
ThinkPHP可以支援直接使用字串作為查詢條件,但是大多數情況推薦使用索引數組或者對象來作為查詢條件,因為會更加安全。
一、使用字串作為查詢條件
這是最傳統的方式,但是安全性不高,
例如:
| 代碼如下 |
複製代碼 |
|
1.$User = M("User"); // 執行個體化User對象
2.$User->where('type=1 AND status=1')->select(); |
最後產生的SQL語句是
| 代碼如下 |
複製代碼 |
|
SELECT * FROM think_user WHERE type=1 AND status=1 |
如果進行多欄位查詢,那麼欄位之間的預設邏輯關係是 邏輯與 AND,但是用下面的規則可以更改預設的邏輯判斷,通過使用 _logic 定義查詢邏輯:
| 代碼如下 |
複製代碼 |
|
1.$User = M("User"); // 執行個體化User對象
2.$condition['name'] = 'thinkphp';
3.$condition['account'] = 'thinkphp';
4.$condition['_logic'] = 'OR';
5.// 把查詢條件傳入查詢方法
6.$User->where($condition)->select(); |
最後產生的SQL語句是
| 代碼如下 |
複製代碼 |
|
SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp' |
講了這麼多了like查詢怎麼實現呢,下面看
| 代碼如下 |
複製代碼 |
|
$userForm=M('user');
$where['name']=array('like','111cn%');
$userForm->where($where)->select(); |
這裡的like查詢即為:name like '111cn%'
| 代碼如下 |
複製代碼 |
|
$where['name']=array('like',array('%111cn%','%.com'),'OR'); |
這裡的like查詢即為:name like '%111cn%' or name like '%.com'
| 代碼如下 |
複製代碼 |
|
$where['name']=array(array('like','%a%'),array('like','%b%'),array('like','%c%'),'111cn','or'); |
這裡的like查詢即為:(`name` LIKE '%a%') OR (`name` LIKE '%b%') OR (`name` LIKE '%c%') OR (`name` = '111cn')
| 代碼如下 |
複製代碼 |
|
$where['_string']='(name like "%111cn%") OR (title like "%111cn")'; |
這裡的like查詢即為:name like '%111cn%' or title like '%111cn'