0

我的 MYSQL 数据库表上有一个跨两个字段的索引。我使用 PHP MDB2 MYSQL 扩展提供的 autoPrepare 和 executeMultiple 对 INSERTS 进行批处理。如果我的索引上有重复命中,但它会引发错误并停止批量插入。我正在寻找 INSERT IGNORE 等效项,这是一个 MYSQL 命令,如果尝试重复,它只会忽略错误。

批量插入允许您指定数组中的表字段,指定字段类型,然后指定要在数组中输入的所有值。你最终会得到类似的东西:

$sth = $db->extended->autoPrepare($table_name, $table_fields,MDB2_AUTOQUERY_INSERT, null, $types);
$res = $db->extended->executeMultiple($sth, $table_values);

所以没有发送特定的查询。我需要以某种方式发送一个选项,以便它知道不会在重复项上抛出错误,而只是忽略该条目。

4

1 回答 1

0

放弃在 MDB2 中使用批量插入。而是使用带有 ignore 的普通插入:

INSERT IGNORE into TABLENAME (field1, field2) VALUES (1,2), (a,b) ...

索引在 field1 和 field2 上。如果对索引值的重复尝试,IGNORE 将跳过该条目,但与 MDB2 批处理命令不同,IGNORE 选项允许查询在遇到重复条目场景时继续。

于 2012-08-21T06:54:47.777 回答