2012-08-08 49 views
0
public function updateMemberdetail(Application_Model_Memberdetail $memberdetail) 
{ 
    $data = array(
     'memberid' => $memberdetail->getMemberid(), 
     'membername' => $memberdetail->getMembername(), 
     'contact' => $memberdetail->getContact(), 
     'birthday' => $memberdetail->getBirthday(), 
     'email' => $memberdetail->getEmail(), 
     'address' => $memberdetail->getAddress(), 
    ); 

    $auth= Zend_Auth::getInstance(); //declare zend_auth to get instance 
    $user= $auth->getIdentity(); //get identity of user 
    $userid = $user->userid; //get userid of user 

    $this->select() //select from usertable and memberdetail 
    ->from(array('memberdetail', 'usertable')) //join memberdetail and usertable through memberid = username 
    ->where('memberdetail.memberid = usertable.?', $userid); 
    $row = $this->fetchRow($select); 
    if ($row == true) //if row exist update row 
    { 

     $this->update($data, 'memberid = '. (int)($memberdetail->getMemberid())); 

    } 
    else 
    { 

     $this->insert($data); //if row doesnt exist, add it 

    } 
} 

您好,我對if語句有些麻煩。如果數據庫中不存在數據,我想添加一行數據,但如果數據存在,請更新它。但是,當我沒有DB中的行時,它不會插入它。當我手動向數據庫插入一行時,它會更新該行。if else,fetchRow()zend

回答

1

fetchRow方法將返回Zend_Db_Table_Row_Abstract的實例,如果未找到,則返回NULL。從Zend的manual,我相信你需要在保存之前創建行。

$select = $this->select() //select from usertable and memberdetail 
    ->from(array('memberdetail', 'usertable')) //join memberdetail and usertable through memberid = username 
    ->where('memberdetail.memberid = usertable.?', $userid); 
    $row = $this->fetchRow($select); 
    if (empty($row)) //if row exist update row 
    { 
    $newRow = $this->createRow($data); 
    $newRow->save(); //if row doesnt exist, add it 
    } 
    else 
    { 
    $this->update($data, 'memberid = '. (int)($memberdetail->getMemberid())); 
    } 
+0

嗯..謝謝,但它仍然沒有插入數據庫。 – 2012-08-08 19:14:11

+0

可以插入新行或更新舊行, 我不能插入新行並更新。 – 2012-08-08 19:22:57