2013-12-21 73 views
0

我是新來的Zend框架,我試圖更新數據庫和網格中的數據,而不是更新特定的行所有的行都得到更新。請幫我解決一下這個。更新查詢更新數據庫中的所有行而不是特定行

這是我的控制器代碼。

public function editAction() 
{ 

$form = new Application_Form_user(); 
$this->view->form = $form; 

if($this->getRequest()->isPost()) 
{ 

$formData= $this->getRequest()->getPost(); 

if($form->isvalid($formData)) 
{ 
    $client= new Application_Model_DbTable_Client(); 
    $firstname = $formData['firstname']; 
    $lastname = $formData['lastname']; 
    $email = $formData['email']; 

    $client->updateClient('Id',$firstname,$lastname,$email); 

    $this->_helper->redirector('index'); 
} 
else 
{ 
    $form->populate($formData); 

} 
} 
else 
{ 

    $id=$this->getRequest()->getparam('id'); 
    if($id>0) 
    { 

     $client= new Application_Model_DbTable_Client(); 
     $clients = $client->getClient('Id'); 

     $form->populate($clients[0]); 
    } 
} 
} 

這是我的型號代碼。

public function updateClient($id,$firstname,$lastname,$email) 
{ 
    $data=array('firstname'=>$firstname, 
       'lastname'=>$lastname, 
       'email'=>$email); 
$this->update($data,"Id=$id"); 
} 
+0

http://stackoverflow.com/questions/4097234/how-update-a-database-table-record-in-zend –

回答

0

嘗試改變你的代碼,所以它看起來是這樣的:

if($form->isvalid($formData)) 
{ 
    $client= new Application_Model_DbTable_Client(); 
    $firstname = $formData['firstname']; 
    $lastname = $formData['lastname']; 
    $email = $formData['email']; 

    $id=$this->getRequest()->getparam('id'); // define your id 

    $client->updateClient($id,$firstname,$lastname,$email); // here, change Id into proper $id 

    $this->_helper->redirector('index'); 
} 
+0

感謝您的回覆andylibrian。我將我的ID改爲$ id,但它給出了一個錯誤「未定義的變量」。 – Tuhin

+0

您是否添加了以下行? '$ ID = $這 - > Request()方法 - > getparam( 'ID'); //定義你的id'該代碼定義了你的id。 –

+0

對不起,我沒有定義ID,現在它工作正常。非常感謝您的幫助。 – Tuhin

1
$client->updateClient('Id',$firstname,$lastname,$email) 

你傳遞的文本字符串'Id'$id參數updateClient。在updateClient內部,您使用"Id=$id"建立了一個條件。您的條件成爲where Id=Id,對於每條記錄都是如此,因此每條記錄都會更新。

您需要傳遞一個包含要更新記錄的實際ID的變量。