我有類似下面的查詢:使用重複鍵更新時,PDO lastInsertId()返回0?
$a = $members->prepare("insert into a(name) values(:name)
on duplicate key update name = :name");
然後,當我這樣做:
$insert_id = $a->lastInsertId()
如果查詢成功插入一行時,它會返回插入的ID如預期,如果它更新了一行,它也會像預期的那樣返回更新的行ID(排序)。但如果它既沒有插入也沒有更新,因爲一切都是一樣的,那麼它只返回0.
我想這是非常合乎邏輯的默認行爲,但有沒有辦法改變它,以便它可以返回ID它試圖更新行,就像它在行中實際改變某些內容時一樣。
謝謝。
幸運/不幸的是(取決於你如何看待它),MySQL有隻有'AUTO_INCREMENT'序列,因此,除非它有一些非標準擴展,爲''MySQL' - > lastInsertId()'不帶參數的精細,與'PostreSQL'等相反。 – Wrikken 2013-03-12 22:30:45