【问题标题】:How to check if record deleted was last record left MySQL PHP如何检查删除的记录是否是最后一条记录离开MySQL PHP
【发布时间】:2012-06-14 23:55:36
【问题描述】:

所以我的网站上有一个 cmets 部分(博客风格),所以每个帖子都有一个 cmets 部分。

我有一个表“帖子”字段(post_id、isComment、标题、时间戳、帖子等)

isComment 是一个布尔值,表示帖子是否有任何 cmets。如果为 0,则不搜索或显示任何 cmets,如果为 1,则在表 cmets 中查询该帖子的 cmets。

还有一个表“cmets”,其中包含字段(comment_id、post_id、created 等)

post_id 是评论对应的帖子。

目前删除评论的查询是:

 "REMOVE FROM comments WHERE comment_id = '$id';"

我想知道的是,是否有任何方法可以确定删除的评论是否是与该帖子对应的最后一条评论? 如果是这样,那么我会将该帖子的 isComment 值更改为 0。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您可以在每次删除评论后触发查询以查找该帖子的 cmets 数量。

    类似的东西。

    select count(*) from comments where post_id = (select post_id from comments where comment_id='$id')
    

    // 你可以根据需要优化查询。

    【讨论】:

    • 是的,我想尽量减少我发送的查询数量,这似乎可以解决问题 - 谢谢!
    【解决方案2】:

    查询给定帖子的任何 cmets。如果没有返回任何行,请使用另一个查询重置您的 isComment 标志。 (可能有一种更有效的方法来使用数据库来使用它的函数来计算行数并采取相应的行动。)

    【讨论】:

    • 这就是我正在做的,我更想知道是否有更有效的方法,但还是谢谢!
    【解决方案3】:

    有几种方法可以解决这个问题。首先,您可以只计算剩下的数量并采取相应的行动:

    SELECT count(*) FROM comments WHERE post_id = '$id'
    

    或者,如果您在删除评论时已经知道评论计数,您可以致电mysql_affected_rows(...)mysqli_affected_rows(...) 来确定是否实际删除了某些内容以及删除了多少。

    另外,我相信您的原始查询,我相信您的语法应该是 DELETE 而不是 REMOVE?

    DELETE FROM comments WHERE comment_id = '$id';
    

    【讨论】:

    • 是的,我输入了 remove!谢谢!
    猜你喜欢
    • 2015-05-31
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    相关资源
    最近更新 更多