文章出處

一.使用字符串作為條件查詢

在 Home/controller/UserController.class.php 下插入

<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model;

class UserController extends Controller {
   
    public function model() {
        $user = M('User');
        var_dump($user->where('id=1')->select());       
    }
}

這是最基本的調用方法,更詳細點則是

 var_dump($user->where('id=1 and user = "蠟筆小新"')->select()); 

二、下面介紹數組查詢方法

就是將 var_dump($user->where('id=1')->select()); 這行用下面的代碼替換

   $condition['id']=1;
   $condition['user']="蠟筆小新";
   var_dump($user->where($condition)->select());    

這時使用調試工具在瀏覽器中看到的是:

這時使用where默認的是ADN,如果想換成OR的話,再加上一條語句即可:

$condition['_logic']='or';

三、使用對象查詢

同樣將 var_dump($user->where('id=1')->select()); 用下列代碼替換:

$condition = new \stdClass();
$condition->id=1;
$condition->user = '蠟筆小新';

PS:stdClass 類是 PHP 內置的類,可以理解為一個空類,在這里可以理解為把條件的
字段作為成員保存到 stdClass 類里。而這里的'\'是將命名空間設置為根目錄,否則會導
致當前目錄找不到此類。使用對象和數組查詢,效果是一樣的,可以互換。在大多數情況下,
ThinkPHP 推薦使用數組形式更加高效。


 

下面介紹表達式查詢

  對于那些要實現模糊判斷的查詢,比如大于、等于、小于之類的SQL查詢,可以使用表達式查詢方式。
  查詢表達式格式:$map['字段名'] = array('表達式','查詢條件');

                    表達式查詢

表達式  含義
EQ 等于(=)
NEQ  不等于(<>)
GT 大于(>)
EGT 大于等于(>=)
LT  小于(<)
ELT  小于等于(<=)
[NOT]LIKE  模糊查詢
[NOT] BETWEEN  (不在)區間查詢
[NOT] IN  (不在)IN查詢
EXP  表達式查詢,支持SQL語法

在 Home/controller/UserController.class.php 中插入以下代碼進行查詢:

$user = M('User');
$map['id'] = array('eq',1);
var_dump($user->where($map)->select());

查詢id=1的數據;

從EQ到ELT的只需要改變array('eq',1)中的eq就行,

這是like 模糊查詢的方式:

 $map['user'] = array('like','%小%'); 查詢用戶名中帶有“小”的數據,

 $map['user'] = array('notlike','%小%'); 查詢用戶名中不帶有“小”的數據,

 $map['user'] = array('like', array('%小%', '%蠟%'), 'AND'); 查詢用戶名中帶有“小”和"臘"的數據,這時后面加了AND,如果不加的話,默認的就是OR.

下面是between的用法:

 $map['id'] = array('between','1,3'); 查詢'id'在1到3之間的數據,

 $map['id'] = array('between',array('1','3')); 和上一句作用相同,

 $map['id'] = array('not between','1,3'); 查詢除了'id'不等于1到3之間的數據,這時not和between之間用空格,之前的notlike之間沒空格

下面是in的用法:

 $map['id'] = array('in','1,2,4'); 查詢id為1,2,4的數據;

 $map['id'] = array('not in','1,2,4'); 查詢id不等于1,2,3的數據,且這時not和in之間也是有空格

EXP:自定義:   (PS:使用 exp 自定義在第二個參數直接寫 where 語句即可)

 $map['id']=array('exp','=1'); 查詢id等于1的數據

 $map['id'] = array('exp','in (1,2,4)'); 查詢id為1,2,4的數據;

$map['id'] =  array('exp', '=1');
$map['user'] =  array('exp', '="蠟筆小新"');
$map['_logic'] = 'OR';
//WHERE 為( (`id` =1) ) OR ( (`user` ="蠟筆小新") )

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()