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