首頁  >  文章  >  後端開發  >  php查詢的實作方法種類介紹和如何在thinkphp中實作查詢

php查詢的實作方法種類介紹和如何在thinkphp中實作查詢

伊谢尔伦
伊谢尔伦原創
2017-07-15 11:57:002292瀏覽

查詢功能在日常開發中常會使用到,今天我們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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn