Php 使用带有INSERT IGNORE的IF语句

Php 使用带有INSERT IGNORE的IF语句,php,mysql,if-statement,insert,ignore,Php,Mysql,If Statement,Insert,Ignore,我有一个投票系统,用户可以用它来投票。问题是,他们不能在同一职位上投票两次。这很好。我是这样做的: $query = "INSERT IGNORE INTO vote_id (vote, postid, userid) VALUES ('1', '{$postid}', '{$userid}')"; $result = mysqli_query($db, $query); header('Location: index.php'); $db是我连接到数据库的变量。

我有一个投票系统,用户可以用它来投票。问题是,他们不能在同一职位上投票两次。这很好。我是这样做的:

$query  = "INSERT IGNORE INTO vote_id (vote, postid, userid) 
        VALUES ('1', '{$postid}', '{$userid}')";    
$result = mysqli_query($db, $query);
header('Location: index.php');
$db是我连接到数据库的变量。 他们仍然可以点击投票,即使它没有插入到表格中。 我的问题是: 当它被忽略时,他们应该不能点击。 我的问题是: 如何分离INSERT和IGNORE,以便在IF语句中使用IGNORE?或者以任何其他方式,可以更改页面的布局。
提前谢谢!真的很挣扎

没有显示投票的代码很难说,但如果是按钮,那么您可以简单地查询用户id和post id的SELECT,如果它找到至少一行,则将disabled添加到按钮。就像这样:

<button name="vote" value="1" disabled>Vote</button>
或者,当查询返回行时,根本不显示任何要投票的内容


另一种方法是检查会话,但它会让同一用户在重新登录后再次投票。

您的想法有点奇怪。您可以存储一些会话信息或有关“此”用户的cookie。“此”用户投票后,您将使用一些信息更新会话或cookie,并使用这些信息禁用投票机制。他们可以清除cookie或会话,因此您需要在数据库中存储一些标识信息。当他们点击投票时,首先检查数据库中的识别信息——如果他们投票了,你可以阻止它发生。数据库端的忽略无法与客户端交互。