gpt4 book ai didi

mysql - 使用 PDO 插入时忽略重复键

转载 作者:可可西里 更新时间:2023-11-01 08:21:40 25 4
gpt4 key购买 nike

是否有一种通用的方法可以在所有数据库驱动程序上使用 PDO 来INSERT IGNORE

如果不是,假设以下方法可行是否公平:

try {
$stmt = $db->prepare("INSERT INTO link_table (id1, id2) VALUES (:id1, :id2)");
$stmt->execute(array( ':id1' => $id1, ':id2' => $id2 ));
}
catch (PDOException $ex) {
// Thanks to comment by Mike:

// Re-throw exception if it wasn't a constraint violation.
if ($ex->getCode() != 23000)
throw $ex;
}

最佳答案

据我所知,不存在适用于所有数据库驱动程序的通用版本。 INSERT IGNOREINSERT...ON DUPLICATE KEY UPDATE 特定于 MySQL。

首先通过选择现有记录来检查现有记录,或者删除现有记录并重新插入都容易出现问题,包括竞争条件和可能违反外键约束或级联删除。

我认为您的方法可能是最安全的。你可以随时 check the error code如果您想确定异常的原因 - 请参阅:

http://docstore.mik.ua/orelly/java-ent/jenut/ch08_06.htm

我认为您可能需要检查代码 23000。

关于mysql - 使用 PDO 插入时忽略重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com