Php 如果我想将向上投票限制为1个向上投票/向下投票,我是否必须创建第三个表来存储用户图像投票关系?

Php 如果我想将向上投票限制为1个向上投票/向下投票,我是否必须创建第三个表来存储用户图像投票关系?,php,mysql,Php,Mysql,因此,我添加了向上投票或向下投票上传图像的功能,但是,我希望每个注册用户只能投票一次 目前,我可以点击向上投票10次,将向上投票提高到10次,然后我可以向下投票5次,最终获得5分。我假设我需要一个表,其中包含一个id,用户id,他投票的图像id和他的投票(upvote或downvote)。我还想这样做,以便用户可以更改他的投票(如果他愿意,可以从upvote更改为downvote) 关于如何做到这一点,有什么好的建议或更好的解决方案吗?您可能需要一个名为UserPostVotes的联接表,该表包

因此,我添加了向上投票或向下投票上传图像的功能,但是,我希望每个注册用户只能投票一次

目前,我可以点击向上投票10次,将向上投票提高到10次,然后我可以向下投票5次,最终获得5分。我假设我需要一个表,其中包含一个id,用户id,他投票的图像id和他的投票(upvote或downvote)。我还想这样做,以便用户可以更改他的投票(如果他愿意,可以从upvote更改为downvote)


关于如何做到这一点,有什么好的建议或更好的解决方案吗?

您可能需要一个名为
UserPostVotes
的联接表,该表包含两个主键和第三个字段,以指示他们的投票方式。

对于一个非常基本的版本,可以做到这一点:

用户*,图像*,投票-简单,对。
我想我需要一个表,其中包含id、用户id、他投票的图像id和他的投票
。。。我听上去不错。当然,您可以而且应该首先在UI上控制流氓投票行为,其次在服务器上控制流氓投票行为。大量的向上投票几乎就像DOS攻击。你能给我一个例子,说明我如何首先在UI上控制流氓投票行为吗?不完全确定这意味着什么。你不需要“id”-只需要图像和用户的id。但是我的表的主键是什么?我想知道我是否应该在表中包含一个HasVote列,该列存储0或1,这取决于他们之前是否投票过?我不知道该如何工作。您只需要
从userpostdowes中选择count(1),其中userId=?postId=?
然后
如果$results['count']抛出新的AlreadyVotedException()啊,是的,这绝对是一个更明智的方法。也许,当你加载页面时,你还想加入该表,这样你就可以指出用户已经选择了什么,并允许他或她更改投票。嗯。我认为您需要一个字段来指示投票的处理情况。可能是
投票标志
处置
。可能是的,但我说这是非常简单的说明,目的只是显示表之间的关系。用户表可能也包含不止一个名称。当然,但投票与此上下文密切相关。我不是故意让你自卫的。当然,它比音符和名字更密切,它的位置也很重要。是的,sry我不明白你说的话。你的权利我忘了投票的位置。我纠正了它。