gpt4 book ai didi

php - 多线程注释 PHP?

转载 作者:可可西里 更新时间:2023-11-01 06:34:51 25 4
gpt4 key购买 nike

我有一个我在回来征求意见时写的脚本,但它只是单线程的。我希望它是多线程的,但只有这样用户才能回复评论,而不是用户才能回复评论的评论。所以线程只有两层深。

目前我在我的数据库中存储了一个comment_id 和一个user_id

我能想到的执行多线程评论的唯一方法是在评论表中有一个 parent 字段。但是如果我这样做,那么当我使用 PHP 选择评论时,我将不得不执行另一个 SELECT 命令来为每个评论选择评论子项(如果有的话)。似乎在数据库上做了很多工作。

必须有更好的方法。对此有什么想法吗?还是教程?

最佳答案

存在三(四)种替代可能性:

  1. 一个递归查询,用于根据父 ID 选择所有评论。许多数据库产品都支持此功能,语法取决于数据库类型。查看文档以获取更多信息(搜索“递归”)。

  2. 如果您将文章 ID 存储在每个(子)评论中,您可以在一个常规选择查询中选择所有具有文章 ID 的评论。您可以使用父 id 在页面上正确的父评论下正确显示评论:

    SELECT * FROM comments WHERE article_id = :article_id
  3. 如果您只需要两级评论,您可以使用扩展的 where 来包含第一级和第二级评论:

    SELECT * FROM comments 
    WHERE parent_id = :article_id
    OR parent_id IN (SELECT id FROM comments WHERE parent_id = :article_id)
  4. 也可以使用union all 组合具有相同列的两个查询,但由于我假设所有数据都来自同一个表,因此可能不需要它(参见上面的扩展 where 子句):

    SELECT * FROM comments WHERE parent_id = :article_id
    UNION ALL
    SELECT * FROM comments WHERE parent_id IN
    (SELECT id FROM comments WHERE parent_id = :article_id)

就我个人而言,我会选择选项 2,因为它简单(不需要异国情调的 SQL 构造)、高效(1 个查询)和灵活(支持任意级别的评论)。

关于php - 多线程注释 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8391211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com