我有以下代码:
$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
。
但我认为应该更简单。不是吗?
这是您正在寻找的 MySQL: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
以及有关如何在 php 中执行此操作的更多信息: PHP MYSQL 如果存在则更新,如果不存在则插入?