-1
// Get Id, Streamanbieter und StreamId
$sql = mysql_query("SELECT `Id`,`Anbieter`,`StreamId`,`Online` FROM `streams`");

// Aktualisiere streams
while($row = mysql_fetch_object($sql)) {
    $id              = $row->Id;
    $anbieter        = $row->Anbieter;  
    $streamid        = $row->StreamId;
    $ison            = $row->Online;
    $set_online      = "UPDATE streams Set Online = '1' WHERE Id = $id";
    $set_offline     = "UPDATE streams Set Online = '0' WHERE Id = $id";
    //$set_onlinesince = "UPDATE streams SET Online_since = current_timestamp WHERE Id = $id AND Online_since = '0000-00-00 00:00:00'";
    $viewers         = get_viewers($streamid, $anbieter);
    $update_viewers  = "UPDATE streams Set Viewers = $viewers WHERE Id = $id";
    $set_zero        = "UPDATE streams Set Viewers = 0 WHERE Id = $id";
    $set_datezero    = "UPDATE streams Set Online_since = '0000-00-00 00:00:00' WHERE Id = $id";
    if(get_online($streamid, $anbieter) == true) {
        if($ison == 0) {
            //mysql_query($set_onlinesince);
        }
        mysql_query($set_online);
        mysql_query($update_viewers);   
    }
    else {
        mysql_query($set_offline);
        mysql_query($set_zero);
        mysql_query($set_datezero); 
    }
}

$set_onlinessince のコメント行を確認してください。mysql_query($set_onlinesince)ほぼ常に実行される問題があったため、句を作成し、IF句に追加のステートメントを追加しましたWhere。ほとんどの場合実行されました。その後、IF節にエコーを入れました。ファイルを実行すると、エコー出力は表示されませんでしたが、mysql_query($set_onlinesince). 次に、その行をアウトコメントしようとしましたが、それでも実行されました。クエリで変数をアウトコメントすると、ページのリロード後も実行されました。それは私をびっくりさせます。ブラウザのキャッシュを数回削除し、別のブラウザでも試しました。効果はありませんでした。どうしてこうなるの???

4

1 に答える 1

5

このシナリオでは、フィールドが に設定されている可能性がありますON UPDATE CURRENT_TIMESTAMP。これにより、以前のクエリのいずれかで自動的に更新されます。

于 2012-12-21T13:29:28.877 に答える