1

私はそのようなスクリプトを持っています:

mysql_connect('localhost', 'xxx', 'xxx');
mysql_select_db('xxx');

$sql = "SELECT * FROM rl_cronjobs";
$sql = mysql_query($sql);
$row = mysql_fetch_array($sql);

$sunday = $row['next_sunday'];
$today = date('Y-m-d');


if($sunday == $today){
    $sql = "DELETE * FROM xxx WHERE stala != 1";
    $sql = mysql_query($sql);
    echo $nextsunday;
    $nextsunday = strtotime("next Sunday");
    $nextsunday = date('Y-m-d', $nextsunday);   
    $sql = "UPDATE xxx SET next_sunday = $nextsunday";
    $sql = mysql_query($sql) or die (mysql_error());
    echo $nextsunday;
}

そしてMySQLではそれの価値は次のとおりです:1984私はそれが次の日曜日の通常の日付である必要があります

MySQLテーブルの行のタイプはvarcharです。これは、tudateを設定しても更新されないためです。何か助けはありますか?

4

2 に答える 2

1

いくつかの引用符が欠落している"'、更新クエリに含まれているようです。あなたはおそらく次のように書くつもりでした:

$sql = "UPDATE xxx SET next_sunday = '$nextsunday'";

補足:myslq_*関数は非推奨です。新しいコードでは使用しないでください。

于 2012-12-10T15:33:14.680 に答える
1

varchar フィールドに日付を格納しないでください。Mysql には、そのようなもののための日付、日時、およびタイムスタンプ フィールドがあり、それらを使用すると、新しい可能性の世界が開かれます。たとえば、「次の日曜日」の計算は次のように簡単に実行できます。

UPDATE xxx SET next_sunday = NOW() + INTERVAL (8 - DAYOFWEEK(NOW())) DAY

PHP の時間関数を使用する必要はありません。この特定の関数は常に実際の次の日曜日を選択することに注意してください。したがって、このコードを日曜日に実行すると、「今日」ではなく次の週の日曜日が取得されます。たとえば、次のようになります。

'2012-12-08' (Saturday) -> '2012-12-09'
'2012-12-09' (Sunday)   -> '2012-12-16'
'2012-12-10' (Monday)   -> '2012-12-16'

同様に、$nextsunday定義される前にエコーしようとしていることに注意してください。

于 2012-12-10T15:55:57.833 に答える