Я использую действительно потрясающий кусок кода, который вставляет И в дубликат ключа, он обновляет дубликат идентификатора и получает последний идентификатор вставки независимо от дубликата или нет. Поэтому я получаю идентификатор последнего обновления или дубликат идентификатора. Но есть ли способ отличить два?
$prepare=$connection->prepare("insert into category(related,text) values(?,?)
on duplicate key update id=last_insert_id(id)");
$prepare->execute([1,"property"]);
print_r($connection->lastinsertid());
// this is both the update id and duplicate update id
Это даст мне идентификатор независимо от дубликата ошибки или нет. Но я хотел бы различить, является ли идентификатор дубликатом или нет. Что-то вроде:
$prepare=$connection->prepare("insert into category(related,text) values(?,?)
on duplicate key select id");
$prepare->execute([1,"property"]);
$fetch=$prepare->fetch();
if(!empty($fetch)){
echo 'DUPLICATE';
$id=$fetch['id'];
// this is the duplicate update id
}
else{
$id=$connection->lastinsertid();
// this is the update id
}
Задача ещё не решена.
Других решений пока нет …