PHP MySQL 从 INSERT INTO IF NOT EXIST 获取结果

PHP MySQL GET RESULT from INSERT INTO IF NOT EXIST

如果记录不存在,我知道如何执行 INSERT INTO。 但如果确实存在,mysql 不会将其视为错误。它只是将其视为插入了 0 行。 我想知道是否是这种情况,return 向用户发送的消息是他们提交的数据已经存在。

我知道如果我在尝试插入新数据之前先查询 mysql 就可以做到。但是,有没有一种方法可以使用 INSERT 执行此操作并获得结果?

您可以使用 ON DUPLICATE KEY UPDATE in which case mysqli::$affected_rows should return 1 if the row is inserted as a new row, 2 if an existing row is updated, and 0 if an existing row is set to its current values (source)。 所以你的代码应该是这样的:

if ($mysqli->affected_rows == 1) {
                    
    $inserted = true;
}

if ($mysqli->affected_rows == 2) {
        
    $updated = true;
}