首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询DB以获取时间戳相同且电子邮件地址相同的多个行

查询DB以获取时间戳相同且电子邮件地址相同的多个行
EN

Stack Overflow用户
提问于 2011-11-22 05:12:33
回答 1查看 160关注 0票数 2
代码语言:javascript
运行
复制
<?php
$curr = time();

$time_query = "SELECT * FROM users ";

$time_query_result = mysql_query($time_query, $db) or 

die("Could not execute sql: $time_query"); 

$num_result = mysql_num_rows($time_query_result);

for ($i1=0; $i1 < $num_result; $i1++){

    $row = mysql_fetch_array($time_query_result); 


    if ($curr > $row["time"] + 259200)//Do if it has been three days since brochure was selected
    {
           $arr = implode (',', $row);//TURN THE ROW[BROCHURES] ARRAY INTO IMPLODE THING INSIDE THIS LOOP!?!?!
        echo $arr;
        $message1  = '<html><body><p>Brochure reminder</p>';
        $message1 .= 'Brochures:<br />'.$arr .$row["brochures"]. $row["time"];
        $message1 .= '</body></html>';
        // Mail it
        mail($row['email'], $subject, $message1, $headers);
    }

} ?>

因此,基本上,我想发送一封电子邮件给选择小册子的客户。这部分已经完成,很好,但我希望他们在三天后收到另一封电子邮件,提醒他们所选择的宣传册。我已经设置了一个cron作业,所以这段代码每三天重复一次。

当邮件发送时,它会将其发送给正确的人,但所选的宣传册将被分成单独的电子邮件。例如,如果有人选择了5个宣传册,三天后他们将显示5个独立的电子邮件,每个电子邮件中都有不同的宣传册。

我需要它,这样他们会在三天后在一封电子邮件中收到所有小册子。会很感激的,这几天我都快疯了。答案似乎真的很简单,但我想不出来。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-22 05:30:38

您应该将时间逻辑移动到数据库查询中--获取所有行是没有意义的,只会丢弃一些(大多数?全部?)如果无事可做:

代码语言:javascript
运行
复制
SELECT *
FROM users
WHERE `time` < (now() - INTERVAL 3 DAY)

完成后,我建议将实际的mail()部分移出数据库获取循环,这样您就可以先批量处理每个用户的手册:

代码语言:javascript
运行
复制
$users = array();
while($row = mysql_fetch_array($time_query_result)) {
    if (!array_key_exists($row['userID'], $users)) {
        $users[$row['userID']] = array('email' => $row['email'], 'brochures' => array());
    $users[$row['userID']]['brochures'] = array('b' => $row['brochures'], 't' => $row['time']);
    }
}

然后循环遍历这个$users数组,为用户构建电子邮件:

代码语言:javascript
运行
复制
foreach ($users as $user) {
     $text = '<html><body><p>Brochure reminder</p>';
     $i = 1;
     foreach ($user['brochures'] as $brochure) {
        $text .= 'Brochures:<br />'.$i++ .$row['b']. $row['b'];
     }
     $text .= '</body></html>';
     mail($user['email'], $subject, $text, $headers);
}

这样,您可以一次性获取所有用户详细信息。然后,你为每个用户建立一个单独的电子邮件,列出他们所有的小册子,并(希望)问题得到解决。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8218594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档