(1)<SCRIPT SRC="/MathJax/MathJax.js">
(2)<include file="Public:MathJax_header"/>
(3)顯示數據
- <volist name="list" id="vo">
- 編號:{$vo.id}<br />
- 難易程度:{$vo.NanYiChengDu}<br />
- 試題內容:{$vo.contnet}<br />
- <table width="400" border="0">
- <tr>
- <td width="3"> (A) {$vo.chioce_A}</td>
- <td width="126"> (B) {$vo.chioce_B}</td>
- <td width="126"> (C) {$vo.chioce_C}</td>
- <td width="126"> (D) {$vo.chioce_D}</td>
- </tr>
- </table>
- </volist>
(4)根據id號來編輯和刪除數據
- <table border="1" width="1000">
- <volist name="list" id="vo">
- <tr>
- <td width="30">{$vo.id}</td>
- <td width="30">{$vo.NanYiChengDu}</td>
- <td width="300">{$vo.contnet}</td>
- <td width="100">{$vo.chioce_A}</td>
- <td width="126">{$vo.chioce_B}</td>
- <td width="126">{$vo.chioce_C}</td>
- <td width="126">{$vo.chioce_D}</td>
- <td><a href="__URL__/edit/id/{$vo['id']}">編輯</a> | <a href="__URL__/delete/id/{$vo['id']}"">刪除</a></td>
- </tr>
- </volist>
- </table>
(5)根據id值修改或刪除記錄
- function edit(){
- $Mathid=$_GET['id'];
- if (!emptyempty ($Mathid)){
- $Math=D('xuanzeti');
- $data=$Math->getByid($Mathid);
- dump($data);
- $this->display();
- }
- else{
- echo "編輯的內容不存在";
- }
- }
1、普通查詢
- $condition = new HashMap();
- // 查詢 name 為 thinkphp 的記錄
- $condition‐>put('name','thinkphp');
- // 使用數組作為查詢條件
- $condition = Array();
- $condition['name'] = 'thinkphp';
使用 Map 方式查詢和使用數組查詢的效果是相同的,并且是可以互換的.
2、條件查詢
在查詢條件里面,如果僅僅使用
$map‐>put(‘name’,’thinkphp’);
查詢條件應該是 name = ‘thinkphp’
如果需要進行其它方式的條件判斷,可以使用
$map‐>put(‘name’,array(‘like’,’thinkphp%’));
這樣,查詢條件就變成 name like ‘thinkphp%’
$map‐>put(‘id’,array(‘gt’,100));
查詢條件 id > 100
$map‐>put(‘id’,array(‘in’,’1,3,8’));
// 或者使用數組范圍
$map‐>put(‘id’,array(‘in’,array(1,3,8)));
上面表示的查詢條件都是 id in (1,3,8)
支持的查詢表達式有EQ |NEQ |GT|EGT|LT |ELT |LIKE|BETWEEN|IN|NOT IN
3、區間查詢
ThinkPHP 支持對某個字段的區間查詢,例如:
- $map‐>put('id',array(1,10)); // id >=1 and id<=10
- $map‐>put('id',array('10','3','or')); //id >= 10 or id <=3
- $map‐>put('id',array(array('neq',6),array('gt',3),'and')); // id != 6 and id > 3
4、組合查詢
如果進行多字段查詢,那么字段之間的邏輯關系是 邏輯與 AND,但是用下面的規則可以更改默認的,邏輯判斷,例如下面的查詢條件:
- $map‐>put('id',array('neq',1));
- $map‐>put('name','ok');
- // 現在的條件是 id !=1 and name like '%ok%'
- $map‐>put('_logic','or');
- // 現在的條件變為 id !=1 or name like '%ok%'
5、多字段查詢
ThinkPHP還支持直接對進行多字段查詢的方法,可以簡化查詢表達式和完成最復雜的查詢方法, 例如:
$map‐>put('id,name,title',array(array('neq',1),array('like','aaa'),array('like','bbb'),’or’));
查詢條件是 ( id != 1) OR ( name like ‘aaa’) OR ( title like ‘?b%’)
如果結合上面的幾種方式,我們可以寫出下面更加復雜的查詢條件
- $map‐>put(‘id’,array(‘NOT IN’,’1,6,9’));
- $map‐>put(‘name,email’,array(array(‘like’,’thinkphp’),array(‘like’,’liu21st’),’or’));
以上查詢條件變成:( id NOT IN(1,6,9) ) AND ( ( name like ‘aaa’) OR ( title like ‘b%’) )
6、查詢緩存
ThinkPHP 內建查詢緩存支持,可以包括對 SQL 查詢緩存、數據對象緩存的緩存支持,對于同一個數據對象的多次查詢并不會導致多次數據庫的查詢開銷,系統內置會進行緩存判斷.
7、統計查詢
在應用中我們經常會用到一些統計數據,例如當前所有(或者滿足某些條件)的用戶數、所有用戶的最大積分、用戶的平均成績等等,ThinkPHP 為這些統計操作提供了一系列的內置方法.
- // 獲取用戶數
- $userCount = $User‐>count();
- // 獲取用戶的最大積分
- $maxScore = $User‐>max(‘score’);
- // 獲取積分大于 0 的用戶的最小積分
- $minScore = $User‐>min(‘score’,’score>0’);
- // 獲取用戶的平均積分
- $avgScore = $User‐>avg(‘score’);
- // 統計用戶的總成績
- $sumScore = $User‐>sum(‘score’);
8、定位查詢
ThinkPHP 支持定位查詢,可以使用getN 方法直接返回查詢結果中的某個位置的記錄。例如:
- // 返回符合條件的第 2 條記錄
- $User‐>getN(2,’score>80’,’score desc’);
- 還可以獲取最后第二條記錄
- $User‐>getN(‐2,’score>80’,’score desc’);
- 如果要查詢第一條記錄,還可以使用
- $User‐>first(’score>80’,’score desc’);
- // 獲取最后一條記錄
- $User‐>last(’score>80’,’score desc’);
- // 獲取積分最高的前 5 條記錄
- $User‐>top(5,’’,’score desc’);
9、動態查詢
借助 PHP5 語言的特性,ThinkPHP 實現了動態查詢,該查詢方式針對數據表的字段進行查詢,例如,User 對象擁有 id,name,email,address 等屬性,那么我們就可以使用下面的查詢方法來直接根據某個屬性來查詢符號條件的記錄.
$user = $User‐>getByName(‘liu21st’);
上面的查詢會轉化為$User‐>getBy(‘name’,’liu21st’)的查詢語言來執行
$user = $User‐>getByEmail(‘[email protected]’);
$user = $User‐>getByAddress(‘中國深圳’);
暫時不支持多數據字段的動態查詢方法,請使用 find 方法和 findAll 方法進行查詢.
ThinkPHP 還提供了另外一種動態查詢方式,就是獲取符合條件的前 N 條記錄
例如,我們需要獲取當前用戶中積分大于 0,積分最高的前 5 位用戶
$User‐>top5(‘score>0’,’*’,’score desc’);
而在另外一個頻道,我們需要獲取點擊最多的前 10 位主播
$Master‐>top10(‘’,’*’,’visit desc’);
10、SQL 查詢
ThinkPHP 支持原生的 SQL 查詢,在某些特殊的情況下可以滿足應用的需要,SQL 查詢的返回值因為是直接返回的 Db 類的查詢結果,沒有做任何的處理,所以永遠是返回的數據集對象或者惰性數據查詢對象,而且可以支持查詢緩存、延遲加載和事務鎖(悲觀鎖).
SQL 查詢使用 query 方法
$list = $User‐>query(“select id,name from think_user”);
如果沒有使用延遲加載,返回結果是 ArrayObject 對象,如果啟用了延遲加載,那么返回的是ResultIterator 對象.
11、事務支持
ThinkPHP 提供了單數據庫的事務支持,如果要在應用邏輯中使用事務,可以參考下面的方法:
- // 啟動事務
- $User‐>startTrans()
- // 提交事務
- $User‐>commit()
- // 事務回滾
- $User‐>rollback();
在有些對多個數據的批量操作中,已經內建了事務支持.
|
新聞熱點
疑難解答
圖片精選