заявления php mail ()

0

Я пытаюсь получить всю информацию о пользователях из базы данных и проверить 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!";
 }
 }
  • 2
    Этот оператор SQL и цикл while - это общий шаблон проектирования, представленный на thedailywtf.
  • 0
    Да, классический анти-шаблон. Возвращает воспоминания :)
Теги:
date-comparison

4 ответа

3
Лучший ответ

Я рекомендую делать сравнение даты в SQL вместо того, чтобы отбрасывать все данные в вашем запросе:

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

Кроме того, что находится в этом столбце в базе данных? Если это временная метка, почему бы вам просто не назвать ее таковой? Я что-то пропустил?

  • 0
    да, это временная метка
  • 1
    Возможно, вы захотите назвать его «EmailTime» или что-то более интуитивное. Удалось ли вам заставить это работать, используя обновленный оператор SQL?
1

Попробуйте. Это больше или равно 14 дням.

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

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

  • 0
    SELECT * не так уж плох по сравнению с выбором строк, которые вам на самом деле не нужны.
0

Или даже

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

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

0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню