这是事情,当我们使用模型更新任何行时,数据数组与行数据完全相同,更新函数返回false。 例如:
$ data = array(
'名称'=> '乔治',
'最后'=>'法拉利
);
$ tabelaTest = new Application_Model_Test();
echo $ tabelaTest-> update($ data,'id = 0');
假设数据库有这样一行:
NAME LAST
Jorge Ferrari
这将打印'0'。如何处理这个异常的任何想法? 对不起,如果我不够清楚,可怜的英语用户;(
答案 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}}
希望有所帮助。