ThinkPHP可(kě)以支持直接使用(yòng)字符串作("♥★zuò)為(wèi)查詢條件(jiàn),但(d₹'àn)是(shì)大(dà)多(duō)數(shù)情況推薦使用(yòng)Ω± 數(shù)組或者對(duì)象來(lái)作(zuò)為(wèi)查詢條Ω ↔¶件(jiàn),因為(wèi)會(huì)更÷γ€加安全。
一(yī)、使用(yòng)字符串作(zuò)為(wèi₩$φ§)查詢條件(jiàn)
這(zhè)是(shì)最傳統的(de)方式,但(d≈àn)是(shì)安全性不(bù)高(gāo),例如(rú):
$User = M("User"); // 實例化(huà)User對(duì♥>)象$User->where('type=1 AND status=1')->select();
最後生(shēng)成的(de)SQL語句是(shì♣λ×)
select * FROM think_user WHERE typ®★∏e=1 AND status=1
采用(yòng)字符串查詢的(de)時(shí)候,我們可(kě)以配合使用(γ"♣₹yòng)字符串條件(jiàn)的(de)安全預處理(lǐ)機(jī)制(z₽★hì)。
二、使用(yòng)數(shù)組作(zuò)為(wèi)查詢條¥™件(jiàn)
這(zhè)種方式是(shì)最常用(yòng)÷>的(de)查詢方式,例如(rú):
$User = M("User"); // 實例化(huà)User對(duì)象$condition['name'] = 'thinkphp';$condition['status'] = 1;// 把查詢條件(jiàn)傳入查詢方法$User->where($condition)->select();
最後生(shēng)成的(de)SQL語句是(shì">≥♦)
select * FROM think_user WHERE `name`='thinkphp' AND status=1
如(rú)果進行(xíng)多(duō)字段查詢,那→↑↑✘(nà)麽字段之間(jiān)的(de)默認邏輯關系是(shì) 邏輯與 A∑ βND,但(dàn)是(shì)用(yòng∏π)下(xià)面的(de)規則可(kě)以更改默認的(de)邏<輯判斷,通(tōng)過使用(yòng) _logic 定義查詢邏輯:♥↓∑£
$User = M("User"); // 實例化(huà)User對(duì)象∞ ≈∑$condition['name'] = 'thinkphp';$condition['account'] = 'thinkphp';$condition['_logic'] = 'OR';// 把查詢條件(jiàn)傳入查詢方法$User->where($condition)->select();
最後生(shēng)成的(de)SQL語句是(shì)
select * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'
三、使用(yòng)對(duì)象方式來(lái)查詢
這(zhè)裡(lǐ)以stdClass內( ≈Ω↓nèi)置對(duì)象為(wèi)例:
$User = M("User"); // 實例化(huà)User對(duì)象// 定義查詢條件(jiàn)$condition = new stdClass();$condition->name = 'thinkphp';$condition->status= 1;$User->where($condition)->select();
最後生(shēng)成的(de)SQL語句和(hé)上(shàng)面一(y←γī)樣
select * FROM think_user WHERE `name`='thinkphp' AND status=1
使用(yòng)對(duì)象方式查詢和(h'γλé)使用(yòng)數(shù)組查詢的(de)效果是(shì)相(↓↔→xiàng)同的(de),并且是(shì)可♠(kě)以互換的(de),大(dà)多(duō)數(shù)情況下(xià)±' ,我們建議(yì)采用(yòng)數(shù)組方式更↑©加高(gāo)效。
在使用(yòng)數(shù)組和(hé)對(duì)象方式查詢的(de)時(shí)候,如(rú)果傳入了(le)不(bù)存在的↕∏(de)查詢字段是(shì)會(huì)被自(zì)動過濾的(de),例如≤ε±¥(rú):
$User = M("User"); // 實例化(huà)User對(duì)象₽₽★$condition['name'] = 'thinkphp';$condition['status'] = 1;$condition['test'] = 'test';// 把查詢條件(jiàn)傳入查詢方法$User->where($condition)->select();
因為(wèi)數(shù)據庫的(de)test字段是(shì)πΩλ不(bù)存在的(de),所以系統會(huì)自(zì)動檢測并過&λ濾掉$condition['test'] = 'test'§×®這(zhè)一(yī)查詢條件(jiàn)。
如(rú)果是(shì)3.2.2版本以上(shàng),當開(kāi) ↕ 啓調試模式的(de)話(huà),則會(h ≥uì)抛出異常,顯示:
錯(cuò)誤的(de)查詢條件(jiàn)。




