1

我正在使用 zend 框架并想在 mysql 数据库中插入数据。程序遇到数据库中已存在的行时抛出错误。如何简单地忽略重复数据并继续下一行。Zend框架中是否有诸如插入忽略之类的方法?我在网上找不到这个问题的确切答案

谢谢

4

2 回答 2

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
} 
于 2012-11-01T13:51:41.810 回答
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);
于 2016-09-20T09:57:35.437 回答