Вопрос

Я пытаюсь получить всю информацию о пользователях из базы данных и проверить временную метку (четырнадцать дней) и сверить ее со временем теперь у меня работает бит времени, но я не могу заставить его отправлять всем, когда время> четырнадцать дней

 $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!";
 }

Также ВЫБРАТЬ * - плохая практика.Вы должны выбрать только те поля, которые вам нужны в этом запросе.

Я предполагаю, что вы уже установили переменную '$ timenow' где-то ранее в скрипте, и я бы обязательно проверил, что оба временных формата одинаковы при сравнении.Это было моей проблемой в прошлом.

Для получения информации о php, связанной с датой, перейдите по следующей ссылке

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

Или даже

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

Я предполагаю, что NOW() выдает нужную вам временную метку - она не будет в UTC (но вы знали это, верно)?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top