Content management system 使用PHP和MySQLi创建类似系统的最佳方法

Content management system 使用PHP和MySQLi创建类似系统的最佳方法,content-management-system,Content Management System,嗨,我有一些用户和一些帖子,我正在寻找的是最好的方法,让用户喜欢一篇帖子,保留他们的用户名,并显示帖子的喜欢数量 我有一张桌子,在那张桌子上,每一行代表一篇文章 我的想法是在一列中写一个喜欢帖子的用户名,在另一列中写一些喜欢的用户名,但我不知道这是否正确。让我们假设用户表和帖子表都有“id”列(因此我们还假设您至少有两个表,“users”和“posts”)。据我所知,您希望在“posts”表中写入所有喜欢某个帖子的用户名,并且还有一个计数器来跟踪有多少用户喜欢该帖子。这里引入一些冗余非常简单。让

嗨,我有一些用户和一些帖子,我正在寻找的是最好的方法,让用户喜欢一篇帖子,保留他们的用户名,并显示帖子的喜欢数量

我有一张桌子,在那张桌子上,每一行代表一篇文章


我的想法是在一列中写一个喜欢帖子的用户名,在另一列中写一些喜欢的用户名,但我不知道这是否正确。

让我们假设用户表和帖子表都有“id”列(因此我们还假设您至少有两个表,“users”和“posts”)。据我所知,您希望在“posts”表中写入所有喜欢某个帖子的用户名,并且还有一个计数器来跟踪有多少用户喜欢该帖子。这里引入一些冗余非常简单。让我们不要谈论如果用户被删除会发生什么(提示:一团混乱)

我们的想法是创建一个新的表“likes”,在其中输入喜欢帖子的用户的id,该id将被其id引用。因此该表基本上需要两列:“userid”和“posted”。如果需要,您可以为时间戳添加第三个时间戳,添加关于类似的额外信息


它可能会使某些请求变得复杂一些(检索喜欢帖子的用户的姓名),但如果表关系良好,则可以在不执行任何查询的情况下进行一些枯燥的一致性检查(例如:删除的用户不应出现在该表中,不再存在的帖子不能被喜欢)。您可以使用外键执行此操作。

请确保您的问题是正确的。你应该只根据你所面临的实际问题提出实际的、可回答的问题。喋喋不休的开放式问题削弱了我们网站的实用性,并将其他问题推到了头版。我的实际问题是:是否将所有喜欢某篇文章的用户都写在一个专栏中,这不会阻止用户喜欢同一篇文章两次甚至更多。你应该创建一个新表(例如,likes)并将所有给定的like保存在其中。嗯,将每个like分隔成一行?这正是我要搜索的。这里可能有很多新概念(使用JOIN(从post中检索用户名)、一致性、键和外键的查询),但是相信我,如果你学会了如何正确使用这些,那是非常值得的。特别是键和外键,在我看来,太多的开发人员低估了它们。