检查是否不存在,并使用PHP插入一个查询

时间:2015-10-27 10:08:33

标签: php mysql

我可以将这两个查询合并到一个查询中,该查询将检查用户是否已经喜欢某个特定帖子,如果没有,则插入数据。

在第一个查询中,我检查具有该用户ID和该帖子ID的行是否存在

$existCheck = $con->prepare("SELECT * FROM likes WHERE user=:user AND post=:post");
$existCheck->execute(array(':user'=>$user_id, ':post'=>$post_id));
$existNumber = $existCheck->rowCount();

在第二个查询中,如果行不存在,则插入数据

if($existNumber == 0) { 
    $insertLike = $con->prepare("INSERT INTO likes (user, post) VALUES(:user, :post)"); 
    $insertLike->execute(array(':post'=>$post_id, ':user'=>$user_id));
}

$user_id = $_SESSION['user_id'];$post_id是每个帖子的唯一ID。

这是我的表结构 enter image description here

1 个答案:

答案 0 :(得分:0)

您需要将用户和帖子字段设置为唯一

ALTER TABLE `likes` ADD UNIQUE (`user`, `post`)

然后使用一个单独的sql:

INSERT INTO likes (user, post) VALUES(:user, :post) ON DUPLICATE KEY UPDATE `id`=`id` /* Hack to ignore updating */