參數(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ú):↓×
$Model = M('User');$where['name'] = ':name';$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ú):
$Model = M('User');$where['id'] = ':id';$list = $Model->where($where)->bind(':id',I('id'),\PDO::PARAM_INT)->select();
也(yě)可(kě)以批量綁定,例如(r∞γú):
$Model = M('User');$where['id'] = ':id';$where['name'] = ':name';$bind[':id'] = array(I('id'),\PDO::PARAM_INT);$bind[':name'] = array(I('name'),\PDO::PARAM_STR);$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ù):
'DB_BIND_PARAM' => true
然後,我們在使用(yòng)
$Model = M('User');$Model->name = 'thinkphp';$Model->email = 'thinkphp@qq.com';$Model->add();
會(huì)自(zì)動對(duì)寫入的(de)數(shù)據進行(xíπβ<ng)參數(shù)綁定操作(zuò)。其操作(zuò)等效于:
$Model = M('User');$Model->name = ':name';$Model->email = ':email';$bind[':name'] = 'thinkphp';$bind[':email'] = 'thinkphp@qq.com';$Model->bind($bind)->add();
自(zì)動綁定不(bù)支持參數(shù)類→Ω×™型等額外(wài)設置,如(rú)果有(yǒu)必要(yà¥φo)請(qǐng)使用(yòng)上(shλ≥☆àng)面的(de)手動綁定方式。




