试图运行一个脚本,从我的数据库中通过电子邮件发送给用户他们的个人时间表。
代码应该类似于this...select表1中的所有用户,其中用户希望每周发送电子邮件。
然后获取这些user_ids并运行查询,以获得表2中每个用户的每周计划。
如果表2中的日期小于或等于代码运行时的1周,并且它不等于今天的日期,则设置变量$email_content。
如果表2中的日期超过1周,那么代码应该知道它已经完成,并且这里想要继续发送()为该用户收集的信息,并仅将该信息发送给该用户,然后继续发送给下一个用户。
在回显“中断”的地方,它本质上是在标记每个用户的日程安排之间的分隔,但它回显了大约20次。理想情况下,这部分将成为我放置mail()函数的位置,因此我不能让它执行mail()函数20次。
我已经尝试了大量不同的代码变体,但似乎都不能正确理解。总而言之,我需要获取user1的info1,然后将info1发送到user1,然后继续获取user2的info2,然后将info2发送到user2,依此类推……
<?php
// GET USERS WHO WANT THEIR WEEKLY SCHEDULE EMAILED TO THEM (Table 1)
$sql = "SELECT * FROM XXXXXXX WHERE weekly_email = 'Yes'";
$result = mysqli_query($connection, $sql);
while ($row = mysqli_fetch_array($result)) {
$id .= "'" . $row['user_id'] . "', ";
}
$id = trim($id, ', ');
// GET THOSE USERS' SCHEDULES (Table 2)
$sql_email = "SELECT * FROM XXXXXXXX WHERE user_id IN ($id) ORDER BY user_id, date, start_time ASC";
$result_email = mysqli_query($connection, $sql_email);
while ($row_email = mysqli_fetch_array($result_email)) {
$truck_name_email = $row_email['truck_name'];
$location_name_email = $row_email['location_name'];
$date_email = $row_email['date'];
$address_email = $row_email['address'];
$x = strtotime("7 days");
$start_email = $row_email['start_time'];
$end_email = $row_email['end_time'];
if ($date_email <= date("m/d/Y l", $x)) {
if ($date_email !== date("m/d/Y l")) {
if (!empty($address_email)) {
$address_email2 = explode(",", $row_email['address'], 2);
$email_content = $date_email . substr($date_email, 11) . " - "
. $location_name_email . ", " . $address_email2[0] . ", "
. $start_email . "-" . $end_email . "<br/>";
echo $email_content;
} elseif (empty($address_email)) {
$email_content .= $date_email . " - " . $location_name_email
. ", " . $start_email . "-" . $end_email . "<br/>";
echo $email_content;
}
}
}
if ($date_email >= date("m/d/Y l", $x)) {
echo "break";
// break;
}
}发布于 2016-07-25 01:26:46
我只是说,你应该注意潜在的SQL注入,在任何用户可控制的字符串进入SQL语句之前对它们进行转义。例如,如果$row['user_id']是一个字符串,则必须执行mysqli_escape_string
看起来你在代码中遗漏了一些东西:
$x = strtotime("7 days");
$start_email = $row_email['start_time'];
$end_email = $row_email['end_time'];
if ($date_email <= date("m/d/Y l", $x)) {
if ($date_email !== date("m/d/Y l")) { // I think that you have a $x here?
if (!empty($address_email)) {
$address_email2 = explode(",", $row_email['address'], 2);
$email_content = $date_email . substr($date_email, 11) . " - "
. $location_name_email . ", " . $address_email2[0] . ", "
. $start_email . "-" . $end_email . "<br/>";https://stackoverflow.com/questions/38553347
复制相似问题