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

    }
}

こんにちは、ifelseステートメントに問題があります。データベースにデータが存在しない場合はデータの行を追加したいのですが、存在する場合は更新します。ただし、DBに行がない場合は、挿入されません。DBに手動で行を挿入すると、行が更新されます。

4

1 に答える 1

1

fetchRowメソッドは、Zend_Db_Table_Row_Abstractのインスタンスを返すか、見つからない場合はNULLを返します。Zendのマニュアルから、保存する前に行を作成する必要があると思います。

  $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()));
  }
于 2012-08-08T19:06:17.320 に答える