0

簡単な質問があります。確認が必要なだけです。mysqlに時間を保存する方法についてです。保存方法は次のとおりです。

  if(isset($_SESSION['user']))
{
$u_id=$_SESSION['user'];
//insert current time to db, i set the type of time to TIME 
$query="INSERT INTO time(id,u_id,time) VALUES('NULL','".$u_id."',CURTIME())";
mysql_query($query);
}

それが私がそれを保存する方法です。後で、それを値と比較する必要もあります。

 //set current time
$curr_time=time();
//set maximum time to 5min
$max=300; 
//get previous time from db
$query="SELECT * FROM time";
$result=mysql_query($query);
$row=mysql_fetch_array($result); 
$prev_time=$row['time'];
//get difference in time
$diff=$curr_time-$prev_time;
//if max time is surpassed
if($diff>$max)
{
  echo "maximum time surpassed!";

    }  

これは単純なコードです。まず、テーブルに時刻を挿入するための構文は大丈夫ですか (CURTIME() のこと)、比較も問題ありません。$diff に格納された結果は秒数になりますか?ありがとうございます。この質問は時間の無駄だと思います。

4

4 に答える 4

3

CURTIME()は時間のみを提供します。おそらくNOW()日付と時刻が必要です。strtotime次に、保存された値をデータベースからエポック以降の秒数に変換するために使用する必要があります。

于 2012-11-06T08:42:51.163 に答える
1

クエリでそれを行います:

 $query = "SELECT id FROM time WHERE time + INTERVAL 5 MINUTES > NOW()";

結果がない場合は、時間が経過しました。

MySQL には、時刻と日付を処理する優れた機能があります。それらを使用します。

(また、節に余分な部分を追加しWHEREます。複数のレコードがある場合は、おそらく間違ったレコードを参照することになります。)

于 2012-11-06T08:43:37.850 に答える
0
 also is the comparison fine, will the result stored in $diff yield seconds?

PHPのmysqlCURTIME()とtime()関数を直接比較することはできません。

例えば:

MySqlの場合:

CURTIME()は時間のみを返します。

select CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 14:15:11  |
+-----------+

PHPの場合

time()は、現在のUnixタイムスタンプを返します。

echo time();
1352191547

思いやりのためにスベリーの答えを見てください。

于 2012-11-06T08:59:16.037 に答える
0

CURTIME は毎日のみであり、関数で数日にわたるスパンをカバーする必要があると思われるため、代わりに NOW() を使用することをお勧めします。代わりに、この形式が得られるためです。

2012-11-06 09:39:34

于 2012-11-06T08:44:20.497 に答える