我是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 :(得分:1)
$client->updateClient('Id',$firstname,$lastname,$email)
您将文字字符串'Id'
作为$id
参数传递给updateClient
。在updateClient
内,您使用"Id=$id"
构建where条件。 1}},其中每条记录都是如此,因此每条记录都会更新。
您需要传递一个包含要更新的记录的实际ID的变量。
答案 1 :(得分: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');
}