php mail () istruzioni
-
05-07-2019 - |
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!";
}
}
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
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)?