Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 根据今天的日期+3个月发送邮件,而sql日期不起作用_Mysql_Arrays_Email_Date - Fatal编程技术网

Mysql 根据今天的日期+3个月发送邮件,而sql日期不起作用

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

我目前正在处理一项计划任务,任务调度器将每天运行该文件,从现在起3个月内提取到期日期,并向接收者发送电子邮件。但是现在,我似乎想不出正确的语法来做这件事。这就是我现在所拥有的,只是给了我一个错误

<?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)