【问题标题】:Add or Update if exist on table zend framework 1.11如果表 zend 框架 1.11 上存在,则添加或更新
【发布时间】:2015-06-04 22:52:09
【问题描述】:

如果表 Mysql 中存在,我想更新数据,否则我添加数据,所以我执行此脚本,但如果 id 已经存在,则添加不更新

public function addUpdateCust(array $data)
{

    if(!empty($data))
    {
        if($this->update($data, array('id = ?' => $data['id'])) > 0 )
        {
            return true;
        }
        $row = $this->createRow();
        //$row->id           = $data['id'];
        $row->code           = $data['code'];
        $row->fabname        = $data['fabname'];
        $row->namecustomer   = $data['namecustomer'];
        $row->adresse        = $data['adresse'];           
        $row->city           = $data['city'];           
        $row->zipcode        = $data['zipcode'];           
        $row->country        = $data['country'];           
        $row->phone          = $data['phone'];       
        $row->representative = $data['representative'];
        $row->idUser         = NULL;

        //var_dump($row);
        try {
            return $row->save();           
        } catch (Exception $e) {
            return $e;
        }
    }
    return false;
}

提前致谢

【问题讨论】:

  • 你不是说什么不起作用。我们希望您在提出问题时付出尽可能多的努力,正如您期望我们回答问题一样。
  • 这应该可以工作。检查$data 的数据是否正确。

标签: php zend-framework model-view-controller frameworks


【解决方案1】:

您可能应该为此使用 try/catch。 update 不会像您想象的那样返回 true 或 false。

public function addUpdateCust(array $data)
{

    if(!empty($data))
    {
        try{
            $this->update($data, array('id = ?' => $data['id']);
        } catch (Zend_Exception $e) {
            $row = $this->createRow();
            //$row->id           = $data['id'];
            $row->code           = $data['code'];
            $row->fabname        = $data['fabname'];
            $row->namecustomer   = $data['namecustomer'];
            $row->adresse        = $data['adresse'];           
            $row->city           = $data['city'];           
            $row->zipcode        = $data['zipcode'];           
            $row->country        = $data['country'];           
            $row->phone          = $data['phone'];       
            $row->representative = $data['representative'];
            $row->idUser         = NULL;

            //var_dump($row);
            try {
                return $row->save();           
            } catch (Exception $e) {
                return $e;
            }
        }
        return true;
    }
}

this question

【讨论】:

  • 所以我想更新如果表上存在这个 id 否则我想插入添加数据 tanhks 来帮助我
  • 嗯,就是这样。如果更新失败(记录不存在),那么您捕获异常并从那里创建。就像我的例子一样。如果您不知道有哪些例外,那么您可能会不知所措。我们可以提供帮助。不为你做。
  • 我这样做但不插入数据不更新例如我的代码已经可以添加但现在当我执行此脚本时不做任何事情感谢帮助
  • 你应该雇一个程序员。我无能为力。我什至不确定您是否理解我发布的示例。祝你好运!
  • 我是程序员,我很了解异常,但是当我执行此脚本时,它对我不起作用,提前谢谢
【解决方案2】:
public function addUpdateCust(array $data)
{

    if(!empty($data))
    {
            $row = $this->createRow();
            //$row->id           = $data['id'];
            $row->code           = $data['code'];
            $row->fabname        = $data['fabname'];
            $row->namecustomer   = $data['namecustomer'];
            $row->adresse        = $data['adresse'];           
            $row->city           = $data['city'];           
            $row->zipcode        = $data['zipcode'];           
            $row->country        = $data['country'];           
            $row->phone          = $data['phone'];       
            $row->representative = $data['representative'];
            $row->idUser         = NULL;

            //var_dump($row);
            try {
                return $row->save();
            } catch (Zend_Exception $e) {
               $this->update($data, array('id = ?' => $data['id']);
            }
        return true;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多