1

ノルウェー語でテキストベースのマフィアゲームをコーディングしていて、時間検出のサポートが必要です。これが取引です。プレーヤーが製品を購入してからの時間が深夜(24時間制)を超えている場合にmysqlレコードを削除する方法。これが私が試したものですが、それが最善の方法かどうかはわかりません。

// Har livvakt? (Has bodyguard)
if($this->isTheftProtected($user_id)){
  $sql = mysql_query("SELECT * FROM `UserTing` WHERE t_meta = '2' AND t_owner = '".$user_id."'");
  $rows = mysql_fetch_array($sql);

  $timeThen = date("Hi", $rows["t_time"]);
  $theNow = date("Hi");

  if($timeThen > 0000){
    // Slett produktet <- Delete here... past midnight.
  } else {
    // Behold.
  }
} else {
  return;
}

だから、もっと良い方法はありますか?time()が使用されていると見なす必要がありますか?私の質問は、これを実際にどのように行うかです。よろしく。;)

4

2 に答える 2

1

SELECT古いレコードを削除する前に、cronjobを追加するか、このクエリを実行する必要がある場合があります。

DELETE FROM `t1` WHERE DATE(`created`) < CURDATE();

JOINSも使用できます...

于 2012-07-29T05:55:47.053 に答える
1

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff

mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');

128885を返します

論理的には;

SELECT * FROM UserTing WHERE TIMESTAMPDIFF(SECOND, NOW(), t_time) >= (60 * 60 * 24) AND t_owner = {$user_id}

t_ownerについて、現在の時刻より24時間古い値を表示します。

編集3:MySQLまたはPHPとのMySQL時間比較を常に使用していることを確認してください。ただし、両方ではありません。2つの間に許容される時間の差異があるためです。(エラーが発生することなく、1時間もオフになる場合があります。)

于 2012-07-29T05:31:50.057 に答える