Mam zapytanie tak:PDO lastInsertId() zwraca 0, gdy używa się duplikatu aktualizacji klucza?
$a = $members->prepare("insert into a(name) values(:name)
on duplicate key update name = :name");
Wtedy kiedy zrobić:
$insert_id = $a->lastInsertId()
Jeśli zapytanie powodzeniem wstawiony wiersz, zwróci identyfikator insert zgodnie z oczekiwaniami, jeśli zaktualizował wiersz, zwróci również zaktualizowany identyfikator wiersza zgodnie z oczekiwaniami (sort). Ale jeśli to nie wstawiło ani nie zaktualizowało niczego, ponieważ wszystko było takie samo, to po prostu zwraca 0.
Domyślam się, że jest to całkiem logiczne domyślne zachowanie, ale czy istnieje sposób na jego zmianę, aby mógł zwrócić identyfikator rząd, który próbował zaktualizować, tak jak to robi, gdy zmienia coś w rzędzie.
Dzięki.
Na szczęście/niestety (w zależności od tego, jak na to patrzysz), MySQL ma tylko sekwencję 'AUTO_INCREMENT', więc jeśli nie ma pewnych niestandardowych rozszerzeń, dla' MySQL' '-> lastInsertId()' bez argumentów jest w porządku , w przeciwieństwie do 'PostreSQL' i tym podobne. – Wrikken