0

我正在尝试从数据库中获取所有用户信息并检查时间戳(十四天)并检查它现在的时间我得到了时间,但是当时间>十四天时我无法将它发送给所有人

 $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!";
 }
 }
4

4 回答 4

3

我建议在 SQL 中进行日期比较,而不是拉回查询中的所有数据:

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

另外,数据库中的那一列是什么?如果它是一个时间戳,为什么不直接这样称呼它呢?我错过了什么吗?

于 2009-10-23T02:50:31.457 回答
1

尝试。那大于或等于 14 天。

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

SELECT * 也是不好的做法。您应该只选择该查询中需要的字段。

于 2009-10-23T02:48:43.097 回答
0

我假设您已经在脚本前面的某个位置设置了“$timenow”变量,我会确保在比较时检查两种时间格式是否相同。那是我过去的问题。

有关日期相关的 php 信息,请访问以下链接

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

于 2009-10-23T03:30:35.510 回答
0

甚至

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

我假设 NOW() 给出了你想要的时间戳——它不会是 UTC(但你知道的,对吧)?

于 2009-10-23T11:55:46.240 回答