我有以下代码:我可以通过单个请求获得INSERT/UPDATE ID吗?
$put_tag_rq = $DBH->prepare("
INSERT INTO `tags`
SET
`name` = :name
ON DUPLICATE KEY UPDATE
`id` = `id`
");
$put_tag_rq->execute(array(
'name' => $tag,
));
$tag_id = $DBH->lastInsertId();
echo "***********Last insert ID = $tag_id<br>";
请注意name
也是该标签的关键。
如果插入name
标签尚未出现在表格中,此代码正常工作。但是如果name
已经存在,则lastInsertId()返回0。
当然,我可以做两个请求:首先检查name
标签是否已经出现在标签中(并获得其ID),第二个插入name
已经出现在选项卡中。
但我认为它应该更简单。不是吗?
什么是你想更新:关于如何做到这一点在PHP http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
而且更多信息?您已将'id'设置为其现有值,因此MySQL根本不会修改该行。 'affectedRows()'的值将会不同,如果新插入的值为1,如果修改了现有的行,则为2,如果没有更改,则为0。 – 2014-09-29 20:55:26
还是你想返回更新行的id__? – 2014-09-29 20:56:02
@MichaelBerkowski我已经更新了'name'也是关键的问题,所以如果'name'已经存在 - UPDATE语句应该可以工作。 – user2525317 2014-09-29 21:03:02