Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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
Php 3个月后发送电子邮件提醒_Php_Mysql_Email_Cron - Fatal编程技术网

Php 3个月后发送电子邮件提醒

Php 3个月后发送电子邮件提醒,php,mysql,email,cron,Php,Mysql,Email,Cron,我有一个数据库和一个网站,注册用户可以在那里下载“信息卡”到他们的智能手机上。 3个月后,他们必须将其返回数据库。我已经设置了一个cron作业,每24小时运行一次php脚本。但没有电子邮件输出。我到处寻找例子和教程,但到目前为止没有运气。 你们有人对可能出现的问题有什么建议吗 <!DOCTYPE html> <?php require_once 'includes/connect_database.php'; DatabaseConnect(); $sql = "SELE

我有一个数据库和一个网站,注册用户可以在那里下载“信息卡”到他们的智能手机上。 3个月后,他们必须将其返回数据库。我已经设置了一个cron作业,每24小时运行一次php脚本。但没有电子邮件输出。我到处寻找例子和教程,但到目前为止没有运气。 你们有人对可能出现的问题有什么建议吗

<!DOCTYPE html>

<?php

require_once 'includes/connect_database.php';
DatabaseConnect();

$sql = "SELECT * FROM My_table WHERE downloaded = DATE(NOW() + INTERVAL 3 MONTH)";
if (false === ($result = mysqli_query($connection, $sql)) {
    trigger_error('there was a query/sql problem', E_USER_ERROR);
}
if ($result->num_rows > 0) {
    // Send email to user with expired info card
    while ($row = mysqli_fetch_row($result)) {
        // send email to user
        mail($row['email'], 'The email Subject', 'The email message body');

        sleep(2);
    }
    mysqli_free_result($result);
}
else {
    // nothing to do today
}

手动运行脚本。
检查php错误。
在数据库或phpmyadmin中手动运行查询。
如果收到数据,请检查php脚本-开始调试脚本的逻辑。
如果看不到数据,则无需显示任何内容。

编辑:在您告诉我您尝试过并在mysql中获得结果后,而不是

while ($row = mysqli_fetch_row($result)) {
尝试使用

mysqli_fetch_assoc($result)


如果您只是手动运行php脚本,它是否正常工作?看来你错过了收场“在以
$sql=
否开头的行中,php脚本不起作用。我试过在脚本中使用一个简单的邮件命令,它成功了。当你手动运行它时,你有没有收到任何PHP错误或警告?现在不是应该是-3个月吗?我得到一个空白屏幕。没有错,我试过你的建议了。我在mysql查询中收到数据。所以我的php脚本一定是问题所在。
mysqli_fetch_array($result, MYSQLI_ASSOC);