我有类似下面的查询:使用重复键更新时,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