【小(xiǎo)編推薦】ThinkPHP3.2——查詢☆✘∞方式

2014-06-26   |™₽   發布者:梁國(guó)芳&nbs₩™₩p;  | &nbs&ε¶∑p; 查看(kàn):3320次

Thinkphp

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ú):

  1. $User = M("User"); // 實例化(huà)User對(duì♥>)象
  2. $User->where('type=1 AND status=1')->select();

最後生(shēng)成的(de)SQL語句是(shì♣λ×)

  1. 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ú):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. $condition['name'] = 'thinkphp';
  3. $condition['status'] = 1;
  4. // 把查詢條件(jiàn)傳入查詢方法
  5. $User->where($condition)->select();

最後生(shēng)成的(de)SQL語句是(shì">≥♦)

  1. 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 定義查詢邏輯:♥↓∑£

  1. $User = M("User"); // 實例化(huà)User對(duì)象∞ ≈∑
  2. $condition['name'] = 'thinkphp';
  3. $condition['account'] = 'thinkphp';
  4. $condition['_logic'] = 'OR';
  5. // 把查詢條件(jiàn)傳入查詢方法
  6. $User->where($condition)->select();

最後生(shēng)成的(de)SQL語句是(shì)

  1. select * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'
三、使用(yòng)對(duì)象方式來(lái)查詢

這(zhè)裡(lǐ)以stdClass內( ≈Ω↓nèi)置對(duì)象為(wèi)例:

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 定義查詢條件(jiàn)
  3. $condition = new stdClass();
  4. $condition->name = 'thinkphp';
  5. $condition->status= 1;
  6. $User->where($condition)->select();

最後生(shēng)成的(de)SQL語句和(hé)上(shàng)面一(y←γī)樣

  1. 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ú):

  1. $User = M("User"); // 實例化(huà)User對(duì)象₽₽★
  2. $condition['name'] = 'thinkphp';
  3. $condition['status'] = 1;
  4. $condition['test'] = 'test';
  5. // 把查詢條件(jiàn)傳入查詢方法
  6. $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)