php mail()ステートメント
-
05-07-2019 - |
質問
データベースからすべてのユーザー情報を取得し、タイムスタンプ(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!";
}
}
解決
クエリ内のすべてのデータを引き戻す代わりに、SQLで日付比較を行うことをお勧めします。
SELECT * FROM accounts WHERE DateDiff(Now(), fourteendays) > 14
また、データベースのその列には何がありますか?それがタイムスタンプである場合、なぜあなたはそれをそのように呼んでみませんか?何か不足していますか?
他のヒント
お試しください。それは14日以上です。
if($timenow >= $days_time){
mail( $users_email, $subject, $emailbody, $headers);
echo "email sent!";
}
SELECT *も悪い習慣です。そのクエリで必要なフィールドのみを選択してください。
スクリプトのどこかで「$ timenow」変数を既に設定していると仮定し、比較するときに両方の時間形式が同じであることを確認します。それは過去の私の問題でした。
日付関連のphp情報については、次のリンクをご覧ください
または
SELECT * FROM accounts WHERE fourneendays < (NOW() - INTERVAL 14 DAYS);
NOW()が希望するタイムスタンプを提供すると仮定しています-UTCではありません(しかし、あなたは知っていますか?)
所属していません StackOverflow