查詢功能在日常開發中常會使用到,今天我們php中文網就帶大家梳理一下查詢功能實現方法,以及簡單介紹下在thinkphp中如何使用查詢功能。
SQL匹配模式
1.使用sql匹配模式,不能使用操作符=或! =,而是使用運算符LIKE或NOT LIKE;
2.使用sql匹配模式,MYSQL提供了2種通配符。
%表示任意數量的任意字元(其中包括0個)
_表示任意單一字元
3.使用sql匹配模式,如果匹配格式中不包含以上2種通配符中的任一個,其查詢的效果等同於=或! =
4.使用sql匹配模式,匹配時,不區分大小寫
#查询用户名以某个字符开头的用户 #查询用户名以字符'l'开头的用户: l% SELECT * FROM user WHERE username LIKE 'l%'; #查询用户名以某个字符结尾的用户 #查询用户名以字符'e'结尾的用户:e% SELECT * FROM user WHERE username LIKE 'e%'; #查询用户名包含某个字符的用户 #查询用户名包含字符'o'的用户:%o% SELECT * FROM user WHERE username LIKE '%o%'; #查询包含三个字符的用户 SELECT * FROM user WHERE username LIKE '_'; #查询用户名第二个字符为o的用户:_o% SELECT * FROM user WHERE username LIKE '_o%';
正則表達式匹配模式
通配符(正規表示式)
.符合任意的單一字元
*符合0個或多個在它前面的字元
x *表示符合任何數量的x字元
[..]符合中括號中的任意字元
[abc]符合字元ab或c
[a-z]符合任意字母
[0- 9]符合任意數字
[0-9]*符合任意數量的任何數字
[a-z]*符合任何數量的字母
^表示以某個字元或字串開始
^a 表示以字母a開頭
$表示以某個字元或字串結尾
s$表示以字母s結尾
使用正規表示式比對模式使用的運算元是:
REGEXP 或NOT REGEXP(RLIKE 或NOT RLIKE)
注意:正規表示式符合模式,其正規表示式出現在匹配字段的任意位置,
其模式就算匹配了,不必在兩側放一個通配符來使得其匹配;
如果僅用通配符. 來匹配,假設N個,那麼其匹配模式表示,大於等於N個;
怎麼理解上面這句話呢?
就是說
... 符合大於等於3個字元的資料
.... 符合大於等於4個字元的資料
#查詢使用者名稱以字元l開頭的使用者:^l;
#正規表示式寫法
SELECT * FROM user WHERE username REGEXP '^l'; #sql匹配模式写法: SELECT * FROM user WHERE username LIKE 'l%'; #查询用户名正好是三个字符的用户:^...$; #sql匹配模式写法: SELECT * FROM user WHERE username LIKE '_'; #正则表达式写法 SELECT * FROM user WHERE username REGEXP '^...$';
thinkphp like模糊查詢
目前使用thinkphp框架進行專案開發的人越來越多了,由於其封裝性較好,導致了許多純PHP開發的部分不易上手,本文實例即以like模糊查詢為例對此加以說明。
這裡主要透過舉例來說明用法:
ThinkPHP可以支援直接使用字串作為查詢條件,但是大多數情況推薦使用索引陣列或物件來作為查詢條件,因為會更安全。
一、使用字串作為查詢條件
這是最傳統的方式,但是安全性不高,
例如:
$User = M("User"); // 实例化User对象 $User->where('type=1 AND status=1')->select();
最後產生的SQL語句是
SELECT * FROM think_user WHERE type=1 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'
二、陣列方式作為查詢條件
講了這麼多了like查詢怎麼實現呢,下面看
$userForm=M('user'); $where['name']=array('like','php%'); $userForm->where($where)->select();
這裡的like查詢即為:
name like 'php%'
查詢語句:
$where['name']=array('like',array('%php%','%.com'),'OR');
以上是php查詢的實作方法種類介紹和如何在thinkphp中實作查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!