2

mysql テーブルに postdate と status 列があります。現在、投稿のステータスは= 1です。投稿を15日送信した後、ステータスを0に変更したいだけです。誰でも助けてくれます。

$todays = date('d-m-Y');
echo $todays;

mysql_query("UPDATE property SET status=1 WHERE expiredate > '".$todays."'");
//echo "record updated!";
4

3 に答える 3

4

あなたの日付は逆です。MySQL の日付形式はYYYY-MM-DD

$todays = date('d-m-Y');

する必要があります

$todays = date('Y-m-d');

さらに、これを行うためのより良い方法は、純粋な SQL を使用することです。

UPDATE property SET status=0 WHERE expiredate < CURRENT_DATE - INTERVAL 15 DAY
于 2013-02-01T14:36:01.080 に答える
3

これは、実行する cron スクリプトと MySQL ステートメントの組み合わせになります。

まず、cron エントリはおそらく 1 日 1 回実行されます (この例では 1 日 1 回、午前 1 時に実行されます)。

* * * 1 0 /path/to/script.php

次に、PHPスクリプトはMySQLクエリを作成します(PHP変数は必要ありません)-テーブルの想定された名前「プロパティ」を使用します

$db = new mysqli('host', 'user', 'password', 'database');
$db->query('update property set status=0 where status=1
            and expiredate < date_sub(now(), interval 15 day');

これにより、現在の有効期限が自動的に取得され、15 日が差し引かれ、それが計算に使用されます。さらに、ステータスが 1 であることを確認して、既に更新されているテーブルのフィールドを更新し続けないようにします。

于 2013-02-01T14:52:32.487 に答える
2

それに応じてステータスを設定するには、クエリを定期的に実行する必要があります。DB に対してクエリを実行するスクリプトを毎日、ある時間に実行することができます。Linux サーバーを使用している場合は、cron ジョブを調べてください。これが探しているものです。

于 2013-02-01T14:38:29.233 に答える