我正在努力使我的投票系统正常工作。我有 3 个数据库表:用户、帖子、投票
表用户具有字段用户名作为主键。表 post 具有 post_id 作为主键。(有更多字段,但它们不会影响问题/问题)
在投票表中,我有 3 个字段:username, post_id, vote
. 投票是enum
('positive', 'negative')
。我想要实现的是,如果用户为页面上显示的特定帖子投票,则查询:INSERT INTO votes ('username','post_id','vote') VALUES('$user_name','$post_id', 'positive')
; 将被执行。
如果假设用户123123
还没有投票给任何帖子,它就可以工作。当这个用户投票让我们说帖子 1 时,这个查询工作正常。但是,如果该用户想为不同的帖子投票,(他的投票被计算在内 - 我只是复制了不起作用的部分代码,其余部分很好并且可以工作)插入查询不会执行。如果用户abcd
想为特定的帖子投票,这又可以正常工作,但只有一次。在我看来,数据库存在某种问题,因此只能有一个具有相同username
or的条目post_id
。如果我希望一个用户能够为多个帖子投票,我该如何解决这个问题?有没有更好的策略呢?
if($runloggedin->num_rows == 1)
{
// If there was no vote for the current posting, then execute this query
$query = "SELECT * FROM posts WHERE post_id='".$post_id."' AND user_name='".$user_name."'"; //get username and the post id
$result = $mysqli->query($query);
$query1 = "SELECT * FROM votes WHERE post_id='".$post_id."' AND username='".$user_name."'"; //check if there is a vote for this post already
$result1 = $mysqli->query($query1);
if ($result->num_rows == 1 && $result1->num_rows == 0)
{
$vote = "INSERT INTO votes ('username','post_id','vote') VALUES('$user_name','$post_id', 'positive')"; // this isn't working. everything else seems to be working (still test it more)
$savevote = $mysqli->query($vote);
$addvote = "UPDATE posts SET posvotes=posvotes+1 WHERE post_id='".$post_id."'";
$runvote = $mysqli->query($addvote);
echo "Thank you for your vote";
}
}