【小(xiǎo)編推薦】ThinkPHP3.2——∞→參數(shù)綁定

2014-06-26   $→; |  &nbs±✘  p;發布者:梁國(guó)芳   | ¶¶  查看(kàn):3320次

Thinkphp

參數(shù)綁定是(shì)指綁定一(yī)個(gè)參數(shù)到(d♣σào)預處理(lǐ)的(de)SQL語句中的(de)©$對(duì)應命名占位符或問(wèn)号占位符指定的(de↓★§≥)變量,并且可(kě)以提高(gāo)SQL處理(lǐ)的(de)效率,→φ需要(yào)數(shù)據庫驅動類的(de)支持,目前隻有(yǒ₩© γu)PDO和(hé)Sqlsrv驅動支持參數(shù)綁定功能(néng)。

手動綁定

參數(shù)手動綁定需要(yào)調用(yòng)連貫操作(zu★γ≈ò)的(de)bind方法,例如(rú):‍↓×

  1. $Model = M('User');
  2. $where['name'] = ':name';
  3. $list = $Model->where($where)->bind(':name',I('name'))->select();

目前不(bù)支持?方式進行(xíng)占位符,無論是(shì)PDO​λ還(hái)是(shì)Sqlsrv驅動均統一(yī)ε→↔±使用(yòng) :var 方式進行(xíng)占位符,驅動內(nèi)部會(huì)自(zì)動進∏ <‍行(xíng)處理(lǐ)。

參數(shù)綁定的(de)參數(shù)可(kφ↑€ě)以是(shì)條件(jiàn)或者要(yào)data數¶∞ (shù)據中的(de)參數(shù),CU≥✔£≠RD操作(zuò)均可(kě)以支持參數(shù↕₽)綁定bind方法。

可(kě)以支持指定綁定變量的(de)類型參數(s♠α∏hù),例如(rú):

  1. $Model = M('User');
  2. $where['id'] = ':id';
  3. $list = $Model->where($where)->bind(':id',I('id'),\PDO::PARAM_INT)->select();

也(yě)可(kě)以批量綁定,例如(r∞γú):

  1. $Model = M('User');
  2. $where['id'] = ':id';
  3. $where['name'] = ':name';
  4. $bind[':id'] = array(I('id'),\PDO::PARAM_INT);
  5. $bind[':name'] = array(I('name'),\PDO::PARAM_STR);
  6. $list = $Model->where($where)->bind($bind)->select();

自(zì)動綁定

對(duì)于某些(xiē)操作(zuò)的(de)情'←≥況(例如(rú)模型的(de)寫入和(hé)更新₹♦™方法),可(kě)以支持參數(shù)的(de)自(zì)₹∑☆動綁定,例如(rú): 首先需要(yào)開(kāi)啓DB£ _BIND_PARAM配置參數(shù):

  1. 'DB_BIND_PARAM' => true

然後,我們在使用(yòng)

  1. $Model = M('User');
  2. $Model->name = 'thinkphp';
  3. $Model->email = 'thinkphp@qq.com';
  4. $Model->add();

會(huì)自(zì)動對(duì)寫入的(de)數(shù)據進行(xíπβ<ng)參數(shù)綁定操作(zuò)。其操作(zuò)等效于:

  1. $Model = M('User');
  2. $Model->name = ':name';
  3. $Model->email = ':email';
  4. $bind[':name'] = 'thinkphp';
  5. $bind[':email'] = 'thinkphp@qq.com';
  6. $Model->bind($bind)->add();

自(zì)動綁定不(bù)支持參數(shù)類→Ω×™型等額外(wài)設置,如(rú)果有(yǒu)必要(yà¥‌φo)請(qǐng)使用(yòng)上(shλ≥☆àng)面的(de)手動綁定方式。