инструкции php mail()
-
05-07-2019 - |
Вопрос
Я пытаюсь получить всю информацию о пользователях из базы данных и проверить временную метку (четырнадцать дней) и сверить ее со временем теперь у меня работает бит времени, но я не могу заставить его отправлять всем, когда время> четырнадцать дней
$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, связанной с датой, перейдите по следующей ссылке
Или даже
SELECT * FROM accounts WHERE fourneendays < (NOW() - INTERVAL 14 DAYS);
Я предполагаю, что NOW() выдает нужную вам временную метку - она не будет в UTC (но вы знали это, верно)?