2012-03-03 51 views
0

這是事情,當我們使用模型來更新任何行時,數據數組與行數據完全相同,更新函數返回false。 例:如何在返回'0'或'false'時發生錯誤或更新時發生相同的數據?

$數據=陣列(

'名稱'=> '喬治',

'最後'=> '法拉利'

);

$ tabelaTest = new Application_Model_Test();

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

假設數據庫有一排這樣的:

名稱現價

豪爾赫·法拉利

這將打印 '0'。如何處理這個異常的任何理想? 很抱歉,如果我不太清楚,英語不好的用戶;(

回答

4

在你的榜樣,如果表中的數據是相同的更新數據,然後Zend_Db_Table將返回(int)0讓你知道,沒有記錄人更新。

如果您確信您更新id存在,那麼你可以假設數據是一樣的,沒有什麼更新。

如果Zend_Db_Table無法構造查詢您引用非存在的列,或無法連接到數據庫,然後update()扔根據實際的錯誤是什麼,它是一個Zend_Exception

如果潛在的​​調用無法運行查詢,無論是使用PDO,Mysqli,Oracle等,則update()將返回(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 
} 

希望有所幫助。

+0

注意未找到!=查詢失敗,即假設行id = 0不存在,update()將返回0而不是false。 – 2012-05-09 03:24:00

相關問題