带有三个变量的php strtodate,用于检查以更改sql中的状态

带有三个变量的php strtodate,用于检查以更改sql中的状态,php,mysql,sql,strtotime,Php,Mysql,Sql,Strtotime,嗨,我正在做一个项目,我的脑子里一片空白,所以我把它交给了全世界来帮助我 我有一个像这样的MySQL数据库 项目的开始日期,通知日期为结束后一周,然后是项目到期时的结束日期 +table+ |id| start | notice | end |status| |01|2013-09-01|2013-9-23|2013-10-01|Active| .... PHP $query=mysql\u查询(“选择*, 日期格式(`start_DATE`,'%d-%m-%Y')作为fmt

嗨,我正在做一个项目,我的脑子里一片空白,所以我把它交给了全世界来帮助我

我有一个像这样的MySQL数据库 项目的开始日期,通知日期为结束后一周,然后是项目到期时的结束日期

+table+
|id|   start  |  notice |   end    |status|
|01|2013-09-01|2013-9-23|2013-10-01|Active|
....
PHP

$query=mysql\u查询(“选择*,
日期格式(`start_DATE`,'%d-%m-%Y')作为fmt_开始日期,
日期格式(“通知日期”,“%d-%m-%Y”)作为fmt通知日期,
日期格式(“结束日期”,“d-%m-%Y”)作为fmt结束日期
从`$table`按`'fmt_start_date`ASC `)订购;
while($row=mysql\u fetch\u array($query)){
$start=strottime($row[“fmt_start_date”]);
$notice=strotime($row[“fmt_notice_date”]);
$end=strottime($row[“fmt_end_date”]);
$current=strottime(日期('d-m-Y'));
如果($notice>=$current&&$end<$current){
mysql_查询(“更新`$table`SET`status`='Notice',其中`id`='{$row[“id”]}';”;
}elseif($end试试这个:

if ($current < $notice){
//has not reached notice (Active)

} elseif ($current < $end){
//has not reached end but has reached notice (Notice)

} else{
//has reached end (Expired)

}
if($current<$notice){
//尚未到达通知(活动)
}elseif(当前<$end){
//尚未到达终点但已到达通知(通知)
}否则{
//已达到结束(过期)
}
首先:

关于mysql函数,您已收到警告

要从MySQL数据库获取UNIX时间戳,应使用MySQL函数UNIX_TIMESTAMP(),例如:

SELECT UNIX_TIMESTAMP(`field_name`) FROM `table_name`;
为了获得一天开始的时间戳,最好使用“strotime('today')”

回答您的问题:在您的情况下,您不需要使用这么多的PHP。足以发出两个MySQL请求:

$current = strtotime('today');
mysql_query("UPDATE `$table` SET  `status` =  'Notice' WHERE  `notice` < FROM_UNIXTIME($current);");
mysql_query("UPDATE `$table` SET  `status` =  'Expire' WHERE  `end` < FROM_UNIXTIME($current);");
$current=strotime('today');
mysql_查询(“UPDATE`$table`SET`status`='Notice',其中`Notice`
所有的
mysql.*
函数都是(不再支持/维护)你应该使用或更新你的代码,以确保将来的功能。我知道刚才使用mysql_uu作为示例,使其更易于阅读完善,所以至少我使用它是正确的。谢谢@schmidt382这是我首先使用的,但由于它需要更改sql中的其他项,所以没有使用它最好使用
updatesome_table t1,table t2 SET t1.column1='some value',其中t2.status='Expire';
。当然,在前两个请求之后。
$current = strtotime('today');
mysql_query("UPDATE `$table` SET  `status` =  'Notice' WHERE  `notice` < FROM_UNIXTIME($current);");
mysql_query("UPDATE `$table` SET  `status` =  'Expire' WHERE  `end` < FROM_UNIXTIME($current);");