所以我有一个订阅表,这里是架构
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| user_id | int(11) | YES | | NULL | |
| sub_to | int(11) | YES | | NULL | |
| date_subbed | varchar(255) | YES | | NULL | |
+-------------+------------------+------+-----+---------+----------------+
非常基本,这是一个示例行
+----+---------+--------+------------------------+
| id | user_id | sub_to | date_subbed |
+----+---------+--------+------------------------+
| 23 | 13 | 2 | 08/19/2014 07:44:49 pm |
+----+---------+--------+------------------------+
所有非常基本的东西。因此,用户13
基本上是用户2
的底层。因此,假设另一个用户加入该网站,另一行创建了用户14
个用户5
。
现在用户2
和用户5
在网站上发布消息并将其插入数据库。我希望订阅 某人的用户收到包含最新帖子的电子邮件。
//Get user subs
$stmt = $con->prepare("SELECT * FROM subscription");
$stmt->execute();
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $key) {
print_r($key);
}
我已经尝试了一个foreach循环,但我看不出它是如何工作的。总而言之,我想在用户发帖时给用户发送电子邮件。我将每24小时发送一封电子邮件,所以我不会杀死服务器。我想确保它也完全自动化。我知道如何做24小时的事情,但当我说自动化时,我的意思是它将通过自己查询和发送电子邮件。任何指针或想法?
答案 0 :(得分:1)
我明白了。只需使用ob_start()
,然后遍历每个用户。选择他们订阅的帖子。然后在循环内部通过电子邮件发送给每个用户我用过这个查询
SELECT
articles.*
FROM
articles
INNER JOIN subscriptions ON articles.from_id = subscriptions.sub_to
INNER JOIN users ON subscriptions.user_id = users.id
WHERE
users.email = :email
答案 1 :(得分:0)
http://sqlfiddle.com/#!2/a1ceb/9
我有点尝试用SQL小提琴做你的说法,但在试用它时,使用当前架构似乎是不可能的。在上面的链接中,我有很多关于如何完全重新设计架构的评论。除非您设置新架构,否则查询非常令人头疼并且无法扩展。
答案 2 :(得分:-1)
$sql="select email id from subscription";
$rs=mysql_query($sql); //resultset
if(mysql_num_rows($rs)>0) //checking whether anyone subscribed the user or not
{
while($d=mysql_fetch_array($rs))
{
$sql1="select * from subscription where sub_to in ('".$d["user_id"]."')";
$rs1=mysql_query($sql1);
while($ds=mysql_fetch_array($rs1)
{
$to=$ds["email_id"];//assuming the field for email id
$subject="";
$msg="";
@mail($to,$subject,$msg);
}
}
}
答案 3 :(得分:-2)
$sql="select email id from subscription";
$rs=mysql_query($sql); //resultset
if(mysql_num_rows($rs)>0) //checking whether anyone subscribed the user or not
{
while($d=mysql_fetch_array($rs))
{
$sql1="select email id from subscription where sub_to in('".$d["user_id"]."')";
$rs1=mysql_query($sql1);
while($ds=mysql_fetch_array($rs1))
{
$to=$ds["email_id"];//assuming the field for email id
$subject="";
$msg="";
@mail($to,$subject,$msg);
}//inner while end
}//outer while end
}