PHP3.2.3 where or,WHERE · ThinkPHP3.2.3完全开发手册 · 看云
where方法的用法是ThinkPHP查詢語言的精髓,也是ThinkPHP ORM的重要組成部分和亮點所在,可以完成包括普通查詢、表達式查詢、快捷查詢、區間查詢、組合查詢在內的查詢操作。where方法的參數支持字符串和數組,雖然也可以使用對象但并不建議。
## 字符串條件
使用字符串條件直接查詢和操作,例如:
~~~
$User = M("User"); // 實例化User對象
$User->where('type=1 AND status=1')->select();
~~~
最后生成的SQL語句是
~~~
SELECT * FROM think_user WHERE type=1 AND status=1
~~~
使用字符串條件的時候,建議配合預處理機制,確保更加安全,例如:
~~~
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();
~~~
或者使用:
~~~
$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();
~~~
如果`$id`變量來自用戶提交或者URL地址的話,如果傳入的是非數字類型,則會強制格式化為數字格式后進行查詢操作。
字符串預處理格式類型支持指定數字、字符串等,具體可以參考vsprintf方法的參數說明。
## 數組條件
數組條件的where用法是ThinkPHP推薦的用法。
##### 普通查詢
最簡單的數組查詢方式如下:
~~~
$User = M("User"); // 實例化User對象
$map['name'] = 'thinkphp';
$map['status'] = 1;
// 把查詢條件傳入查詢方法
$User->where($map)->select();
~~~
最后生成的SQL語句是
~~~
SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1
~~~
##### 表達式查詢
上面的查詢條件僅僅是一個簡單的相等判斷,可以使用查詢表達式支持更多的SQL查詢語法,查詢表達式的使用格式:
~~~
$map['字段1'] = array('表達式','查詢條件1');
$map['字段2'] = array('表達式','查詢條件2');
$Model->where($map)->select(); // 也支持
~~~
表達式不分大小寫,支持的查詢表達式有下面幾種,分別表示的含義是:
| 表達式 | 含義 |
|-----|-----|
| EQ | 等于(=) |
| NEQ | 不等于(<>) |
| GT | 大于(>) |
| EGT | 大于等于(>=) |
| LT | 小于(
| ELT | 小于等于(<=) |
| LIKE | 模糊查詢 |
| [NOT] BETWEEN | (不在)區間查詢 |
| [NOT] IN | (不在)IN 查詢 |
| EXP | 表達式查詢,支持SQL語法 |
## 多次調用
where方法支持多次調用,但字符串條件只能出現一次,例如:
~~~
$map['a'] = array('gt',1);
$where['b'] = 1;
$Model->where($map)->where($where)->where('status=1')->select();
~~~
多次的數組條件表達式會最終合并,但字符串條件則只支持一次。
更多的查詢用法,可以參考[查詢語言](1766)部分。
總結
以上是生活随笔為你收集整理的PHP3.2.3 where or,WHERE · ThinkPHP3.2.3完全开发手册 · 看云的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让不带www的域名跳转到带www的域名
- 下一篇: u盘pe安装深度linux系统教程,深度