$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正在做它的时候?
答案 0 :(得分:1)
这不起作用的原因是因为日期结构与数据库中的日期结构不匹配。
在我的php脚本中,我得到了:
$selectedDate = date('d-m-Y', ($createDate));
应该是这样的:
$selectedDate = date('Y-m-d', ($createDate));