【小(xiǎo)編推薦】ThinkPHP3.2—€ —數(shù)據更新

2014-06-26  &n©σ♠bsp;|   發布者:梁國(g ™→uó)芳   | &♦←<‍nbsp; 查看(kàn):3320次¥↑​®

Thinkphp

ThinkPHP的(de)數(shù)據更新操作(z¶☆uò)包括更新數(shù)據和(hé)更新字段方法。

更新數(shù)據

更新數(shù)據使用(yòng)save方法,例如(rú):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 要(yào)修改的(de)數(shù)據對(duì)象屬性賦值
  3. $data['name'] = 'ThinkPHP';
  4. $data['email'] = 'ThinkPHP@gmail.com';
  5. $User->where('id=5')->save($data); // 根據條件(jiàn)更新記錄

也(yě)可(kě)以改成對(duì)象方式來(lái)操作(zuò):←€₹

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 要(yào)修改的(de)數(shù'↑)據對(duì)象屬性賦值
  3. $User->name = 'ThinkPHP';
  4. $User->email = 'ThinkPHP@gmail.com';
  5. $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)任何記錄

  1. $User->save($data);

除非使用(yòng)下(xià)面的(d≈​e)方式:

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 要(yào)修改的(de)數(shù)據對(duì≤∏)象屬性賦值
  3. $data['id'] = 5;
  4. $data['name'] = 'ThinkPHP';
  5. $data['email'] = 'ThinkPHP@gmail.com';
  6. $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é)數(shù)據過濾

和(hé)add方法一(yī)樣,save方法支持使用(yòng)field方法過濾字段和(hé)filter方法過濾數(shù)據,例如(rú):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 要(yào)修改的(de)數(shù)據對(duì)象屬性賦值
  3. $data['name'] = 'test';
  4. $data['email'] = '<b>test@gmail∑♣∑★.com</b>';
  5. $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)傳入。

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 要(yào)修改的(de)數(shù)據對(duì)象屬性賦 '值
  3. $data['name'] = 'ThinkPHP';
  4. $data['email'] = 'ThinkPHP@gmail.com';
  5. $User->where('id=5')->data($data)->save(); // 根據條件(jiàn)保存修改的(deΩ₽®)數(shù)據

使用(yòng)create方法的(deφ‌✔)例子(zǐ):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 根據表單提交的(de)POST數(s  hù)據創建數(shù)據對(duì)象
  3. $User->create();
  4. $User->save(); // 根據條件(jiàn)保存修改的(de)€✘≠數(shù)據

更新字段

如(rú)果隻是(shì)更新個(gè)别♠♠字段的(de)值,可(kě)以使用(yòng)setField方法。

使用(yòng)示例:

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 更改用(yòng)戶的(de)name值
  3. $User-> where('id=5')->setField('name','ThinkPHP');

setField方法支持同時(shí)更新多(duō)個(gè)字段,隻需≥™β要(yào)傳入數(shù)組即可(kě),例如(rú):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 更改用(yòng)戶的(de)name和(h☆∑é)email的(de)值
  3. $data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com');
  4. $User-> where('id=5')->setField($data);

而對(duì)于統計(jì)字段(通(tōng)常指​←±÷的(de)是(shì)數(shù)字類型)的(de)更新,系統↔σ 還(hái)提供了(le)setInc和(hé)setDec方法。

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. $User->where('id=5')->setInc('score',3); // 用(yòng)戶的(de)積分(fēn)加3
  3. $User->where('id=5')->setInc('score'); // 用(yòng)戶的(de)積分(fēn)加1
  4. $User->where('id=5')->setDec('score',5); // 用(yòng)戶的(de)積分(fēn)減5
  5. $User->where('id=5')->setDec('score'); // 用(yòng)戶的(de)積分(fēn)減1