如何使用 IGNORE 判断 PDO MySQL INSERT 是否成功

How to tell if PDO MySQL INSERT was successful with IGNORE

我知道我可以简单地 if ($PDO->execute()) { //true } 查看 PDO INSERT 是否成功,但是如果涉及 IGNORE 怎么办?

例如

INSERT IGNORE INTO MyTable SET DateTime = CAST(:dateTime AS DATETIME)

如果记录已经存在,因此被忽略,将 ->execute() return truefalse?

我似乎找不到任何说明我的文档。

尝试:

$stmt->execute();
$stmt->rowCount();

这将告诉您上次查询影响了多少行。

我以为这会给我一个快速的答案,但事实并非如此,所以我自己测试了:

如果 IGNORE 语句没有记录被更改,那么 ->execute() 仍然 returns true。只有出错才会returnfalse