如何知道何时返回'0'或'false'是错误或更新时的相同数据?

时间:2012-03-03 19:48:37

标签: zend-framework

这是事情,当我们使用模型更新任何行时,数据数组与行数据完全相同,更新函数返回false。 例如:

  

$ data = array(

     
    

'名称'=> '乔治',

         

'最后'=>'法拉利

  
     

);

     

$ tabelaTest = new Application_Model_Test();

     

echo $ tabelaTest-> update($ data,'id = 0');

假设数据库有这样一行:

NAME LAST

Jorge Ferrari

这将打印'0'。如何处理这个异常的任何想法? 对不起,如果我不够清楚,可怜的英语用户;(

1 个答案:

答案 0 :(得分:4)

在您的示例中,如果表中的数据与更新中的数据相同,则Zend_Db_Table将返回(int)0,告知您没有更新记录。

如果您确定更新的id存在,那么您可以假设数据相同且无需更新。

如果Zend_Db_Table无法构建您的查询,您引用了一个不存在的列,或者无法建立与数据库的连接,那么update()将基于Zend_Exception引发execute()实际错误是。

如果基础update()调用未能运行查询,无论是使用PDO,Mysqli,Oracle等,那么(bool)false将返回$data = array('name' => 'Jorge', 'last' => 'Ferrari'); $table = new Application_Model_Test(); try { $result = $table->update($data, $table->getAdapter->quoteInto('id = ?', 0); // Use === to compare type AND value if (false === $result) { return false; // bool false returned, query failed } else { if ($result === 0) { // no rows updated } else { // 1 or more updated } return $result; } } catch (Zend_Exception $zex) { // exception occurred. Could not connect, bad parameters or SQL etc throw $zex; // or return false; // if you return false here and above, then you don't // know if an exception occurred, or if the query failed }

示例:

{{1}}

希望有所帮助。