
2014-06-26 &n©σ♠bsp;| 發布者:梁國(g ™→uó)芳 | &♦←<nbsp; 查看(kàn):3320次¥↑®
ThinkphpThinkPHP的(de)數(shù)據更新操作(z¶☆uò)包括更新數(shù)據和(hé)更新字段方法。
更新數(shù)據使用(yòng)save方法,例如(rú):
$User = M("User"); // 實例化(huà)User對(duì)象// 要(yào)修改的(de)數(shù)據對(duì)象屬性賦值$data['name'] = 'ThinkPHP';$data['email'] = 'ThinkPHP@gmail.com';$User->where('id=5')->save($data); // 根據條件(jiàn)更新記錄
也(yě)可(kě)以改成對(duì)象方式來(lái)操作(zuò):←€₹
$User = M("User"); // 實例化(huà)User對(duì)象// 要(yào)修改的(de)數(shù'↑)據對(duì)象屬性賦值$User->name = 'ThinkPHP';$User->email = 'ThinkPHP@gmail.com';$User->where('id=5')->save(); // 根據條件(jiàn)更新記錄
數(shù)據對(duì)象賦值的(de)方式,save方法無需傳入數(shù∞β)據,會(huì)自(zì)動識别。
注意:save方法的(de)返回值是(shì)影(yǐng)響的(de)記錄數(shù),如(rú)果返回false則表示更新出錯(cuò),因此一(α÷§yī)定要(yào)用(yòng)恒等來( &"lái)判斷是(shì)否更新失敗。
為(wèi)了(le)保證數(shù)據庫的(de)安全,避免出錯(cuò)↓σ更新整個(gè)數(shù)據表,如(rú)果沒有™♦(yǒu)任何更新條件(jiàn),數(shù)β↑據對(duì)象本身(shēn)也(yě)不(bù)包含主 ∞σ₩鍵字段的(de)話(huà),save方法不(bù)會(h•±uì)更新任何數(shù)據庫的(de)記錄。
因此下(xià)面的(de)代碼不(bù)會(huì)更改數(shù)據庫β¥<的(de)任何記錄
$User->save($data);
除非使用(yòng)下(xià)面的(d≈e)方式:
$User = M("User"); // 實例化(huà)User對(duì)象// 要(yào)修改的(de)數(shù)據對(duì≤∏)象屬性賦值$data['id'] = 5;$data['name'] = 'ThinkPHP';$data['email'] = 'ThinkPHP@gmail.com';$User->save($data); // 根據條件(jiàn)保存修改的(de)數(shù)據
如(rú)果id是(shì)數(shù)據表的(de)主鍵的(de)♣× ₩話(huà),系統自(zì)動會(huì)把主鍵的(de)值作(zuò"≥×)為(wèi)更新條件(jiàn)來(lái)更新其他(tāα♥)字段的(de)值。
數(shù)據更新方法支持的(de)連貫操作(zuò)方法有(₹γφ yǒu):
| 連貫操作(zuò) | 作(zuò)用(yòng) | 支持的(de)參數(shù)類型 |
|---|---|---|
| where | 用(yòng)于查詢或者更新條件(jiàn)的(de)定義 | 字符串、數(shù)組和(hé)對(duì)'¥象 |
| table | 用(yòng)于定義要(yào)操作(zuò)的(de)數(shù)據表§∑§∏名稱 | 字符串和(hé)數(shù)組 |
| alias | 用(yòng)于給當前數(shù)據表定義别名α>±σ | 字符串 |
| field | 用(yòng)于定義允許更新的(de)字段 | 字符串和(hé)數(shù)組 |
| order | 用(yòng)于對(duì)數(shù)據排序 | 字符串和(hé)數(shù)組 |
| lock | 用(yòng)于數(shù)據庫的(de)♥δ鎖機(jī)制(zhì) | 布爾值 |
| relation | 用(yòng)于關聯更新(需要(yào)關聯模型支持) | 字符串 |
| scope | 用(yòng)于命名範圍 | 字符串、數(shù)組 |
| bind | 用(yòng)于數(shù)據綁定操作(zuò≥π¶™) | 數(shù)組 |
| comment | 用(yòng)于SQL注釋 | 字符串 |
和(hé)add方法一(yī)樣,save方法支持使用(yòng)field方法過濾字段和(hé)filter方法過濾數(shù)據,例如(rú):
$User = M("User"); // 實例化(huà)User對(duì)象// 要(yào)修改的(de)數(shù)據對(duì)象屬性賦值$data['name'] = 'test';$data['email'] = '<b>test@gmail∑♣∑★.com</b>';$User->where('id=5')->field('email')->filter('strip_tags')->save($data); // 根據條件(jiàn)保存修改的(de)數(shù)據
當使用(yòng)field('email')的(de)α$≈♥時(shí)候,隻允許更新email字段的(d'₩€e)值(采用(yòng)strip_tagε₽s方法過濾),name字段的(de)值将不(bù)會→δ←(huì)被修改。
還(hái)有(yǒu)一(yī)種方法是(shì)通(tō☆''×ng)過create或者data方法創建要(yào)更新的(de)數(sδhù)據對(duì)象,然後進行(xíng)£ ♠σ保存操作(zuò),這(zhè)樣save方法的(de)參數(shù)♣♠可(kě)以不(bù)需要(yào)傳入。
$User = M("User"); // 實例化(huà)User對(duì)象// 要(yào)修改的(de)數(shù)據對(duì)象屬性賦 '值$data['name'] = 'ThinkPHP';$data['email'] = 'ThinkPHP@gmail.com';$User->where('id=5')->data($data)->save(); // 根據條件(jiàn)保存修改的(deΩ₽®)數(shù)據
使用(yòng)create方法的(deφ✔)例子(zǐ):
$User = M("User"); // 實例化(huà)User對(duì)象// 根據表單提交的(de)POST數(s hù)據創建數(shù)據對(duì)象$User->create();$User->save(); // 根據條件(jiàn)保存修改的(de)€✘≠數(shù)據
如(rú)果隻是(shì)更新個(gè)别♠♠字段的(de)值,可(kě)以使用(yòng)setField方法。
使用(yòng)示例:
$User = M("User"); // 實例化(huà)User對(duì)象// 更改用(yòng)戶的(de)name值$User-> where('id=5')->setField('name','ThinkPHP');
setField方法支持同時(shí)更新多(duō)個(gè)字段,隻需≥™β要(yào)傳入數(shù)組即可(kě),例如(rú):
$User = M("User"); // 實例化(huà)User對(duì)象// 更改用(yòng)戶的(de)name和(h☆∑é)email的(de)值$data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com');$User-> where('id=5')->setField($data);
而對(duì)于統計(jì)字段(通(tōng)常指←±÷的(de)是(shì)數(shù)字類型)的(de)更新,系統↔σ 還(hái)提供了(le)setInc和(hé)setDec方法。
$User = M("User"); // 實例化(huà)User對(duì)象$User->where('id=5')->setInc('score',3); // 用(yòng)戶的(de)積分(fēn)加3$User->where('id=5')->setInc('score'); // 用(yòng)戶的(de)積分(fēn)加1$User->where('id=5')->setDec('score',5); // 用(yòng)戶的(de)積分(fēn)減5$User->where('id=5')->setDec('score'); // 用(yòng)戶的(de)積分(fēn)減1
