我可以通过单个请求获得INSERT / UPDATE ID吗?

时间:2014-09-29 20:52:14

标签: php mysql pdo lastinsertid

我有以下代码:

$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的标签

但我认为它应该更简单。不是吗?

1 个答案:

答案 0 :(得分:1)

这是您正在寻找的MySQL: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

有关如何在php中执行此操作的更多信息: PHP MYSQL UPDATE if Exist or INSERT if not?