$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();
10月28日(今日)ごとに「アクティブ」フィールドが0に設定されると述べたCRONジョブを実行しているため、上記のコードを正しく設定したとは思いません。
問題は、今年の10月28日以降であっても、データベース内のすべての行のアクティブフィールドが「0」に設定されていることです。
以下は、ハッピングされると想定されるものです。
現在の年は2012年であるため、10月28日(現在)になると、この日付より前の「SessionDate」の試験は「Active」値が「0」になり、他の試験は「Active」のままになります。 「1」の値。
その後、CRONは、来年の10月28日になるまでその仕事をしません。今回は、明らかに2013年になります。同じルールが、この日付より前の「SessionDate」の「Active」値が「Active」であるすべての試験に適用されます。 0、他の試験の「アクティブ」値は「1」のままです。
その後、CRONは、翌年の10月28日になるまでその仕事をしません。今回は、明らかに2014年になります。同じルールが、この日付より前の「SessionDate」の「Active」値が「Active」であるすべての試験に適用されます。 「0」の場合、他の試験の「アクティブ」値は「1」のままです。
等々....
では、CRONが少しずつ実行しているときに、データベースのすべての行の「アクティブ」フィールドが0に設定されるのはなぜですか。