Php 通过电子邮件通知用户新的评论

Php 通过电子邮件通知用户新的评论,php,mysql,Php,Mysql,我有一个博客,当用户评论一篇文章时,我想在每篇文章中添加一个功能“通过电子邮件通知我新的评论” 我正在使用PHP和MySQL 我正在考虑向对某些帖子发表评论的用户发送一封邮件,并选中复选框“通过电子邮件通知我新评论”,查询如下: $query = mysql_query("SELECT COUNT(post_id) AS NumberOfComments FROM comments WHERE post_id = $post_id"); $row = mysql_fetch_assoc($qu

我有一个博客,当用户评论一篇文章时,我想在每篇文章中添加一个功能“通过电子邮件通知我新的评论”

我正在使用PHP和MySQL

我正在考虑向对某些帖子发表评论的用户发送一封邮件,并选中复选框“通过电子邮件通知我新评论”,查询如下:

$query = mysql_query("SELECT COUNT(post_id) AS NumberOfComments FROM comments WHERE post_id = $post_id");

$row = mysql_fetch_assoc($query);

if($row['NumberOfComments '] > $NumberOfComments){
    mail("someone@example.com","subject","message");
}

但是如果有人从帖子中删除了一条评论,并且添加了一条新的评论,那么评论的数量将是相同的,并且不会发送邮件。关于如何更好地进行查询,您有什么想法吗?

在将注释插入数据库时发送此邮件,这样您就不需要额外的查询了

编辑: 因此,您将希望获得通知的用户的信息存储在数据库中 使用带有
id
user\u id
post\u id
的表,我将其命名为
comment\u notify
然后你可以做类似的事情

// Insert comment to database
$userWhoWantGetNotified = mysql_query("SELECT * FROM comment_notify WHERE post_id = $postId");
while ($entry = mysql_fetch_assoc($userWhoWantGetNotified )) {
    $userId = $entry["user_id"];
    // get email from user_id
    mail(..);
}

这取决于何时通知用户

他们是否希望收到每一条评论的通知?然后,发布评论的功能也会发送通知。任何时候发表评论时,请检查是否通知用户并通知他们

他们是否希望定期(每天、每周等)通知存在新评论?那你还是不想数一数。在这种情况下,您需要检查是否存在新记录。有两种方法可以做到这一点:

  • 基于标识符。如果您知道用户收到通知的最后一条注释的ID(您可能需要将其存储在通知表中的某个位置),那么您可以检查该注释上方是否存在新ID。如果是的话,会有新的评论
  • 根据日期。如果您知道用户收到通知的最后一条评论的时间戳(您可以将其存储在某处或根据通知时间段动态计算),那么您可以检查自那时起是否存在新的评论。如果是的话,会有新的评论
  • 正如您所发现的,简单地计算记录并不能表明您在寻找什么。记录计数所做的只是告诉您有多少条记录。如果您想知道这些记录是何时发布的,您需要某种时间戳。如果您想知道记录是否与以前已知的记录匹配,则需要某种标识符


    永远不要假设信息来自不包含该信息的数据。存储您需要知道的信息。

    可以使用更多上下文,以便正确地通知初学者:)查询是什么样子,我如何将邮件发送给选中“通过电子邮件通知我新评论”复选框的特定人员?我只想用一种简单的方式在添加新评论/评论时通知用户-无论添加了多少评论,都只需一次通知。我还是一个初学者。如果我知道帖子中评论的最后一个id,那么我如何获得最后一个评论id?如果我知道帖子中评论的最后一个id,那么查询会是什么样子?@user3740970:那么,定期通知?这正是我在这个答案中描述的。只需记录上次通知用户的内容(时间戳或标识符),然后检查此后是否添加了新行。如果是这样,那么就有了新的记录。例如,如果上次通知用户注释ID为245,最大注释ID现在为257,则会有新注释。@user3740970:
    从注释中选择最大(ID)