2012-11-01 74 views
1

我使用zend框架並希望在mysql數據庫中插入數據。程序在遇到數據庫中已存在的行時拋出錯誤。如何簡單地忽略重複的數據並繼續到下一行。在Zend框架中有沒有插入忽略的方法? 我無法找到確切的答案,這個問題在網絡默默地忽略插入到數據庫中的重複條目Zend框架

感謝

回答

1

我會建議插入包裝成一個try/catch塊,像這樣:

try { 
    $db->insert(array()); 
} catch (Zend_Db_Exception $e) { 
    // ignored 
} 

更好的方式是檢查是否拋出異常,如果不拋出新的異常以獲得「其他」錯誤。

其他解決方案「昂貴的,因爲你要追求分貝第一」

$validator = new Zend_Validate_Db_NoRecordExists(
    array(
     'table' => 'database_table', 
     'field' => 'your_field_to_check_for_unique' 
    ) 
); 

if ($validator->isValid('your_field_to_check_for_unique) { 
     // DO Insert 
} 
+0

感謝,這將捕獲錯誤,你有什麼想法whts重複條目的錯誤代碼號,I M用mysql。 – Ajeet

+0

應該是141:http://rackerhacker.com/2007/08/09/mysql-error-codes/ – opHASnoNAME

0

有可能使用「原始」的查詢。
這是一個例子,如何跳過已創建記錄和更新具體數值

$query = 'INSERT IGNORE INTO table_name (col1, col2, col3) VALUES (1, 2, 3), (4, 5, 6) ON DUPLICATE KEY UPDATE col3 = VALUES(col3)'; 
$dbAdapter->query($query);