我有一个博客,我想添加一个功能"通过电子邮件通知我新评论"每个帖子,当用户评论帖子时。
我正在使用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");
}
但如果有人从帖子中删除了评论并添加了新评论,那么评论数量就会相同,也不会发送任何邮件。关于查询如何更好的任何想法?
答案 0 :(得分:1)
在从评论到数据库的插入中执行此邮件,然后您不需要这个额外的查询。
编辑:
因此,您要存储想要在数据库中收到通知的用户
使用包含id
user_id
post_id
的表格,我将其命名为comment_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(..);
}
答案 1 :(得分:1)
这取决于您想要通知用户的时间。
他们是否希望收到每条评论的通知?然后发布评论的功能也会发送通知。每次发布评论时,请检查要通知的用户并通知他们。
他们是否希望定期(每日,每周等)通知存在新评论?然后你还是不想算数。在这种情况下,您想要检查是否存在新记录。有几种方法可以解决这个问题:
正如您所发现的那样,只需计算记录并不是您正在寻找的有意义的指示。所有记录计数都会告诉您有多少记录。如果您想知道何时发布了这些记录,您需要某种时间戳。如果您想知道记录是否与先前已知的记录匹配,则需要某种标识符。
永远不要假设从不包含该信息的数据中获取信息。存储您需要知道的信息。