Thinkphp 查詢數據
thinkphp 查詢數據主要提供以下幾類查詢:
- select:普通查詢,同 findAll() 方法
- find:取得符合查詢條件的一條記錄
- getBy動態查詢:根據某個字段取得符合查詢條件的一條記錄
- getField:獲取某個字段的值或多個字段的索引數組
- 區間查詢:取得符合查詢條件的區間記錄
- 統計查詢:取得符合查詢條件的統計數據
- 定位查詢:取得符合查詢條件的一條或多條記錄
- 原生sql查詢:支持以原生 SQL 進行查詢或執行操作
select()
select() 是 ThinkPHP 中最常用的普通查詢方法,得到的是一個二維數組。findAll() 為 select() 方法的別名,并建議使用 select()。
讀取操作
下面的例子將 user 表的所有數據讀取出來并顯示:
public?function?read(){ ????$Dao?=?M("User"); ???? ????//?查詢數據 ????$list?=?$Dao->select(); ????//dump($list);//?用?dump()?可以在調試階段查看數據是否已讀取 ????//?模板變量賦值 ????$this->assign("list",?$list); ????//?輸出模板 ????$this->display(); }
假設上面的例子對應的 class 文件為 Lib/Action/IndexAction.class.php ,那么對應的模板文件為 Tpl/default/Index/read.html。
立即學習“PHP免費學習筆記(深入)”;
數據顯示模板
模板文件用于顯示剛才讀取的 User 表的數據。在學習階段,要不想使用模板,也可以直接使用 foreach 語法在 read() 操作內直接顯示讀取的數據。下面是模板相應的代碼片段,我們將讀取的數據在一個表格中顯示出來:
ID | 用戶名 | 電子郵件 | 注冊時間 |
---|---|---|---|
{$vo[‘uid’]} | {$vo[‘username’]} | {$vo[’email’]} | {$vo[‘regdate’]|date=’Y-m-d?H:i’,###} |
field() 查詢指定字段
select() 方法默認是查詢所有字段的數據,如果要查詢某個或某些字段,就需要使用 filed() 方法。
filed() 是屬于 ThinkPHP 連貫操作 中的一個方法,如在上面的例子中,只查詢用戶名和電子郵件地址,則查詢方法對應更改為:
$list?=?$Dao->field('username,email')->select();
使用查詢條件
使用 ThinkPHP 連貫操作 可以很方便的對數據查詢使用查詢條件。下面是一些簡單的查詢條件的例子。
where() 條件
……??? ????//?構造查詢條件 ????$condition['username']?=?'Admin'; ????//?查詢數據 ????$list?=?$Dao->where($condition)->select(); ……
上述查詢的就是 username=’Admin’ 這個條件的數據。關于 ThinkPHP where 條件更詳細資料,請參閱《ThinkPHP Where 條件》。
ORDER BY 排序
在查詢中使用 ORDER BY 對數據進行排序:
……??? ????//?查詢數據 ????$list?=?$Dao->order('uid?DESC')->select(); ……
這個例子就是數據按照 ORDER BY uid DESC 進行查詢,而 order() 方法中的參數意義跟 SQL 語句中的意義完全一致。
LIMIT 限制
在查詢中使用 LIMIT 限定數據返回的記錄數:
……??? ????//?查詢數據 ????$list?=?$Dao->limit('4,5')->select(); ……
這個例子就是將第 5-10 條記錄取出,limit() 方法內的參數意義跟 SQL 語句中的 LIMIT 完全一致。
連貫操作
ThinkPHP 中允許將數據對象中的各個方法寫在一起操作,如:
$list?=?$Dao->order('uid?DESC')->limit('4,5')->select();
更多ThinkPHP相關技術文章,請訪問ThinkPHP教程欄目進行學習!