Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MySQL和PHP启动帖子线程的逻辑?_Php_Mysql - Fatal编程技术网

使用MySQL和PHP启动帖子线程的逻辑?

使用MySQL和PHP启动帖子线程的逻辑?,php,mysql,Php,Mysql,我决定从头开始建立自己的社交网络,因为我意识到这将是一个有趣的练习,我不想花太多时间学习定制像Drupal Commons这样的现成解决方案。到目前为止,我在基本的登录/注销功能、创建新用户、上传化身等方面做得很好。我还有一个MySQL数据库表,可以保存用户的帖子 在posts表上运行基本查询,我可以轻松检索一篇文章、它的ID以及创建它的用户(userID是users表中的外键)。但是,我决定用threadID实现一个threads表。这样,帖子不仅可以根据日期或帖子进行排序,还可以根据主题进行

我决定从头开始建立自己的社交网络,因为我意识到这将是一个有趣的练习,我不想花太多时间学习定制像Drupal Commons这样的现成解决方案。到目前为止,我在基本的登录/注销功能、创建新用户、上传化身等方面做得很好。我还有一个MySQL数据库表,可以保存用户的帖子

posts
表上运行基本查询,我可以轻松检索一篇文章、它的ID以及创建它的用户(userID是
users
表中的外键)。但是,我决定用
threadID
实现一个
threads
表。这样,帖子不仅可以根据日期或帖子进行排序,还可以根据主题进行排序

然而,我不确定发布新帖子的逻辑。我的数据库由以下表组成:用户、帖子、线程。在数据库中,它们的结构如下(仅显示相关字段):

上面的格式在预览中看起来不错,如果在我发布后完全不稳定,我深表歉意

用户创建与帖子创建是分开的,因此我已经创建了一个
userID
,在我发布新帖子时可以使用。然后post自动生成自己的postID。阻止我前进的是,我不太确定如何在同一事务中创建新的
线程ID
postID
,以确保它们正确地相互了解。我唯一需要一个新线程ID的时候是,如果有人正在启动一个新线程。回复将使用现有的threadID并获得唯一的postID


如果有人能解释一下这笔交易的基本逻辑,我将不胜感激。我过去很少使用关系数据库,因此我认为这是一个学习有用内容的机会。

我要做的方法是将threadID更改为parentID,如果它是线程中的子线程,则它引用另一个postID;如果它是正常的父帖子,则它引用-1(或0)。通过这种方式,您可以轻松地对任何帖子执行线程,甚至不需要线程表。让我知道这是否对您有意义:)

此方法还有第二个好处:这样,回复可以嵌套,否则您只能回复原始邮件。因此,+1!您的意思是将
posts
表中的FK更改为
parentID
,它继承了另一个
postID
?@armadadrive是的,这就是我的意思。当它不继承任何内容时,您可以将其保留为null、0或-1,然后将您的逻辑基于此。因此,要获取所有父帖子,您可以在parentID=-1的帖子中进行查询
Select*,然后为每个帖子加载它们的子帖子。我喜欢!它干净灵活。谢谢
Users         Posts         Threads
-----         -----         -------
userID (pk)   postID (pk)   threadID (pk)
              userID (fk)  
              threadID (fk)