更新查询更新数据库中的所有行而不是特定行

时间:2013-12-21 09:41:53

标签: php zend-framework zend-db

我是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");
}

2 个答案:

答案 0 :(得分:1)

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

您将文字字符串'Id'作为$id参数传递给updateClient。在updateClient内,您使用"Id=$id"构建where条件。

您需要传递一个包含要更新的记录的实际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');
}