0

ああ。これが機能しない理由がわかりません:

2行しかないデータベースがあります。db 列の 1 つは、時間 + 1 時間を格納します。データベースにクエリを実行し、現在の時刻よりも古い時刻が格納されている各行について、メッセージを送信したいと思います。基本的に、メッセージが保存されてから 1 時間メッセージの送信が遅れるだけです。

何が起こるかというと、1 つの電子メールしか送信しないということです。「storedtime」の両方の値は、現在の時刻よりも古い (小さい) です。ただし、メッセージは 1 つしか送信されません。ここで一体何を見逃したのですか?

$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);
        }
}

それが役に立てば幸い。

次の例は、ドキュメント サイトから確認できます。さらに、推奨される代替手段(代わりにMySQLiまたはPDO_MySQL ) セクションを読むことが重要です。http://php.net/manual/es/function.mysql-fetch-array.php

于 2012-09-01T17:58:48.827 に答える