Domanda

Sto cercando di ottenere tutte le informazioni degli utenti dal database e controllare il timestamp (quattro giorni festivi) e controllarlo con l'ora, ora ho il bit funzionante ma non riesco a inviarlo a tutti quando è > quattro giorni

 $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!";
 }
 }
È stato utile?

Soluzione

Consiglio di fare il confronto delle date in SQL, invece di ritirare tutti i dati nella tua query:

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

Inoltre, cosa c'è in quella colonna nel database? Se è un timestamp, perché non lo chiami semplicemente come tale? Mi sto perdendo qualcosa?

Altri suggerimenti

Prova. È maggiore o uguale a 14 giorni.

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

Anche SELECT * è una cattiva pratica. Devi selezionare solo i campi che ti servono in quella query.

Suppongo che tu abbia già impostato la variabile '$ timenow' in qualche punto precedente nello script e mi assicurerei di verificare che entrambi i formati di tempo siano gli stessi durante il confronto. Questo è stato il mio problema in passato.

Per informazioni php relative alla data, visitare il seguente link

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

O anche

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

Suppongo che NOW () fornisca il timestamp desiderato - non sarà in UTC (ma lo sapevi, vero)?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top