thinkphp如何查詢數據庫?
數據庫查詢
thinkphp內置了非常靈活的查詢方法,可以快速的進行數據查詢操作。
查詢條件可以用于CURD等任何操作,作為where方法的參數傳入即可。
ThinkPHP可以支持直接使用字符串作為查詢條件,但是大多數情況推薦使用索引數組或者對象來作為查詢條件,因為會更加安全。
立即學習“PHP免費學習筆記(深入)”;
查詢方式
一、使用字符串作為查詢條件
這是最傳統的方式,但是安全性不高,例如:
$User?=?M("User");?//?實例化User對象 $User->where('type=1?AND?status=1')->select();
最后生成的SQL語句是
SELECT?*?FROM?think_user?WHERE?type=1?AND?status=1
二、使用數組作為查詢條件
$User?=?M("User");?//?實例化User對象 $condition['name']?=?'thinkphp'; $condition['status']?=?1; ?//?把查詢條件傳入查詢方法 $User->where($condition)->select();
最后生成的SQL語句是
SELECT?*?FROM?think_user?WHERE?'name'='thinkphp'?AND?status=1
如果進行多字段查詢,那么字段之間的默認邏輯關系是 邏輯與 AND,但是用下面的規則可以更改默認的邏輯判斷,通過使用 _logic 定義查詢邏輯:
$User?=?M("User");?//?實例化User對象 $condition['name']?=?'thinkphp'; $condition['account']?=?'thinkphp'; $condition['_logic']?=?'OR';?//定義查詢邏輯 ?//?把查詢條件傳入查詢方法 $User->where($condition)->select();
最后生成的SQL語句是
SELECT?*?FROM?think_user?WHERE?'name'='thinkphp'?OR?`account`='thinkphp'
?
三、使用對象方式來查詢 (這里以stdClass內置對象為例)
$User?=?M("User");?//?實例化User對象 ?//?定義查詢條件 $condition?=?new?stdClass();? $condition->name?=?'thinkphp';? $condition->status=?1;? $User->where($condition)->select();
最后生成的SQL語句和上面一樣
SELECT?*?FROM?think_user?WHERE?`name`='thinkphp'?AND?status=1
使用對象方式查詢和使用數組查詢的效果是相同的,并且是可以互換的,大多數情況下,我們建議采用數組方式更加高效,后面我們會以數組方式為例來講解具體的查詢語言用法。
表達式查詢
上面的查詢條件僅僅是一個簡單的相等判斷,可以使用查詢表達式支持更多的SQL查詢語法,并且可以用于數組或者對象方式的查詢(下面僅以數組方式為例說明),查詢表達式的使用格式:
$map['字段名']?=?array('表達式','查詢條件');
表達式不分大小寫,支持的查詢表達式有下面幾種,分別表示的含義是:
?
$map['id']??=?array('eq',100);??id?=?100; ?$map['id']??=?array('egt',100);id?>=?100 ?$map['name']?=?array('like','thinkphp%');?name?like?'thinkphp%'?模糊查詢 ?$map['a']?=array('like',array('%thinkphp%','%tp'),'OR');$map['b']?=array('notlike',array('%thinkphp%','%tp'),'AND');?(a?like?'%thinkphp%'?OR?a?like?'%tp')?AND?(b?not?like?'%thinkphp%'?AND?b?not?like?'%tp')
?本文來自ThinkPHP框架技術文章欄目:http://www.php.cn/phpkj/thinkphp/
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦