0

データベースからすべてのユーザー情報を取得しようとしており、タイムスタンプ (14 日) を確認し、時間で確認しようとしていますが、時間ビットが機能するようになりましたが、時間が 14 日を超えると、すべての人に送信することができません。

 $result1 = mysql_query("SELECT * FROM accounts") or die (mysql_error()); 
 while ($row1 = mysql_fetch_array($result1)) {
 $users_email = $row1['email'];
 $user_name = $row1['user'];
 $days_time = $row1['fourteendays'];
 if($timenow > $days_time){
 mail( $users_email, $subject, $emailbody, $headers);
 echo "email sent!";
 }
 }
4

4 に答える 4

3

クエリ内のすべてのデータを引き戻すのではなく、SQL で日付比較を行うことをお勧めします。

SELECT * FROM accounts WHERE DateDiff(Now(), fourteendays) > 14

また、データベースのその列には何がありますか? タイムスタンプの場合は、そのように呼んでみませんか? 何か不足していますか?

于 2009-10-23T02:50:31.457 に答える
1

試す。それは14日以上です。

 if($timenow >= $days_time){
     mail( $users_email, $subject, $emailbody, $headers);
    echo "email sent!";
 }

また、SELECT * は悪い習慣です。そのクエリで必要なフィールドのみを選択する必要があります。

于 2009-10-23T02:48:43.097 に答える
0

あるいは

SELECT * FROM accounts WHERE fourneendays < (NOW() - INTERVAL 14 DAYS);

NOW()が必要なタイムスタンプを提供すると仮定しています-UTCにはなりません(しかし、あなたはそれを知っていました)?

于 2009-10-23T11:55:46.240 に答える
0

スクリプトの前のどこかに '$timenow' 変数を既に設定していると仮定し、比較するときに両方の時間形式が同じであることを確認します。それが過去の私の悩みでした。

日付関連の php 情報については、次のリンクを参照してください。

http://ca.php.net/manual/en/function.date.php

于 2009-10-23T03:30:35.510 に答える