0

啊。我不知道为什么这不起作用:

我有一个只有 2 行的数据库。其中一个 db 列存储时间 + 1 小时。我想查询数据库,并且对于存储时间早于当前时间的每一行,给我发送一条消息。基本上,它只是将消息从存储之时起延迟发送 1 小时。

发生的事情是它只发送一封电子邮件。'storedtime' 中的两个值都比当前时间更早(更小)。但只有一条消息发出。我到底错过了什么?

$query = "SELECT * FROM db";
$result=@mysql_query($query);
$num=@mysql_numrows($result);
$row=mysql_fetch_array($result);

$i = 0;
$time = time();
while($i < $num)
    {
        if(($row['storedtime']) <= $time)
        {           
        mail("myemailaccount","Subject","Message here, etc.", $headers);
        }

    $i++;
    }
4

1 回答 1

2

我建议mysql_fetch_array($result)在 while 循环中使用

然后,它应该是这样的:

$query = "SELECT * FROM db";
$result = mysql_query($query);

$time = time();
while($row = mysql_fetch_array($result))
{
        if(($row['storedtime']) <= $time)
        {
              mail("myemailaccount","Subject","Message here, etc.", $headers);
        }
}

希望能帮助到你。

您可以从文档站点查看以下示例。此外,阅读建议的替代方案部分(MySQLiPDO_MySQL)也很重要。http://php.net/manual/es/function.mysql-fetch-array.php

于 2012-09-01T17:58:48.827 回答