它将DB中的“活动”字段的所有值设置为0

时间:2012-10-28 01:16:17

标签: php mysql sql

$createDate = mktime(0,0,0,10,28,date("Y"));
$selectedDate =  date('d-m-Y', ($createDate));
$active = 0;
$sql = "UPDATE Session SET Active = ? WHERE SessionDate <= ?";                                         
$update = $mysqli->prepare($sql);
$update->bind_param("is", $active, $selectedDate);  
$update->execute();

我认为我没有正确设置上述代码,因为我正在运行CRON工作,我已经说过每10月28日(今天),它会将“活动”字段设置为0。

问题是它将我的数据库中所有行的活动字段设置为“0”,即使它在今年10月28日之后也是如此。

以下是想要发生的事情:

  • 现在当前年份是2012年10月28日(现在是),“SessionDate”在此日期之前的任何考试都应该具有“有效”值“0”,其他考试保持“有效”值为“1”。

  • CRON将在明年10月28日之前完成这项工作,这一年显然是2013年。同样的规则适用于“SessionDate”在此日期之前应该有的任何考试“有效”值为“0”,其他考试的“有效”值仍为“1”。

  • CRON将在第二年10月28日之前完成工作,这一年显然是2014年。同样的规则适用于此日期之前“SessionDate”应该具有的任何考试“有效”值为“0”,其他考试的“有效”值仍为“1”。

依旧......

那么为什么我的所有数据库行都是他们的“活动”字段设置为0,当CRON正在做它的时候?

1 个答案:

答案 0 :(得分:1)

这不起作用的原因是因为日期结构与数据库中的日期结构不匹配。

在我的php脚本中,我得到了:

$selectedDate =  date('d-m-Y', ($createDate));

应该是这样的:

$selectedDate =  date('Y-m-d', ($createDate));