我可以通过单个请求获取 INSERT/UPDATE id 吗?

问题描述 投票:0回答:1

我有以下代码:

$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 mysql pdo lastinsertid
1个回答
1
投票

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

以及有关如何在 php 中执行此操作的更多信息: PHP MYSQL 如果存在则更新,如果不存在则插入?

© www.soinside.com 2019 - 2024. All rights reserved.