Mysql 根据今天的日期+3个月发送邮件,而sql日期不起作用
我目前正在处理一项计划任务,任务调度器将每天运行该文件,从现在起3个月内提取到期日期,并向接收者发送电子邮件。但是现在,我似乎想不出正确的语法来做这件事。这就是我现在所拥有的,只是给了我一个错误Mysql 根据今天的日期+3个月发送邮件,而sql日期不起作用,mysql,arrays,email,date,Mysql,Arrays,Email,Date,我目前正在处理一项计划任务,任务调度器将每天运行该文件,从现在起3个月内提取到期日期,并向接收者发送电子邮件。但是现在,我似乎想不出正确的语法来做这件事。这就是我现在所拥有的,只是给了我一个错误 <?php //authentication for database $hostname = "localhost"; $username = "admin"; $password = "xxxxxx"; //connection to the database $dbhandle = mys
<?php
//authentication for database
$hostname = "localhost";
$username = "admin";
$password = "xxxxxx";
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
//select a database to work with
$selected = mysql_select_db("notification",$dbhandle)
or die("Could not select examples");
//execute the SQL query and return records
$result = mysql_query("SELECT * FROM tbl_lead WHERE pass_expiry >= DATE(NOW() + INTERVAL 3 MONTHS");
//variable for email message
$emailBody = "";
$headers = 'From: Pass Validity Reminder' . "\r\n" .
'Reply-To: myemail@email.com' . "\r\n" .
'Cc: ccemail@Wemail. com' . "\r\n".
'X-Mailer: PHP/' . phpversion();
$to = "myemail@email.com";
//fetch tha data from the database
while ($row = mysql_fetch_array($result))
{
$subject = $row['company_name']."'s"." work pass is expiry soon";
$emailBody .="Creator: ".$row['rlog_create_user_name']." \n". "Email: ".$row['email']."
\n"."Comment: ".$row['comment']." \n"."Contact: ".$row['contact']." \n";
}
mail($to, $subject, $emailBody, $headers);
echo 'Email sent successfully!';
//close the connection
mysql_close($dbhandle);
?>
我已经根据@peterm建议进行了修改,现在错误已经消失了。但是,现在电子邮件仍然无法发送
我添加了一个电子邮件参数检查。我必须在错误消息之前回显结果,以确保它通过查询
//fetch tha data from the database
while ($row = mysql_fetch_array($result))
{
$subject = $row['company_name']."'s"." work pass is expiry soon";
$emailBody .= "Company: ".$row['company_name']." \n"."Comment: ".$row['comment']."
\n"."Contact: ".$row['contact']." \n";
}
if(mail($to, $subject, $emailBody, $headers)) {
echo 'Email sent successfully!';
} else {
echo $emailBody;
die('Failure: Email was not sent!');
}
假设脚本检查数据库中的每个条目,并为每个匹配条目发送电子邮件。很抱歉评论中的编码,我是stackoverflow的第一次用户,已经8年多没有接触编程了。忘记一切,nv听说了PDO@彼得 查询失败,因为SELECT有错误 试试这个:
SELECT * FROM events WHERE event_date >= DATE(NOW() + INTERVAL 3 MONTH)
您没有关闭DATE函数的括号,正确的INTERVAL关键字是MONTH
现在,当查询执行失败时,返回FALSE而不是资源。因此,在将$result传递给mysql\u fetch\uU4*之前,请始终检查返回值:
$result=mysql_query。。。;
如果$结果{
//处理你的错误
die“查询失败”。;//当然有更好的方法来处理它
}
...
请停止在新代码中使用mysql_*函数。他们是。与或一起使用。这很好。嗨,彼得,谢谢你的指导。我已根据你的建议作出修改,现在错误已经消失了。但是,现在电子邮件仍然无法发送。我添加了电子邮件参数检查。我必须在错误消息之前回显结果,以确保它通过查询//当$row=mysql_fetch_数组$result{$subject=$row['company_name']时从数据库获取数据。工作许可证即将到期;$emailBody.=company:.$row['company_name'].\n.Comment:.$row['Comment'.\n.Contact:.$row['Contact'.\n}如果邮件$to,$subject,$emailBody,$headers{echo'电子邮件发送成功!}其他{echo$emailBody;die'Failure:电子邮件未发送!';}脚本应该检查数据库中的每个条目,并为每个匹配条目发送电子邮件。很抱歉注释中的编码,我是stackoverflow的第一次用户@peterm@SpencerLim我很高兴它有帮助。现在到底是什么问题?您的查询是否返回您期望的所有行?您的php.ini是否将所有参数都设置为r邮件工作?你们有可操作的邮件服务器吗?是的,我有一个更简单的testemail.php,它可以毫无问题地发送出去。
SELECT * FROM events WHERE event_date >= DATE(NOW() + INTERVAL 3 MONTH)