2012-04-04 9 views
0

タイムスタンプの問題があります。私はタイムスタンプが過去か未来かをチェックしたいと思います。過去にあった場合は、クエリが実行されます。なります私は2つの以上の変数を使用し更なる設定のタイムスタンプクエリが動作しません

2012-04-04 12:06:38 

はここまで私は含まれてい

$row = $query->fetch_object(); 
$timestamp = $row->time 

によってフェッチされるのmysql-タイムスタンプを得ました

$added = $timestamp + 1209600; //what adds 14days (1209600 seconds) to my db-timestamp 
$check = $added < time(); //what checks if the 14days have passed or not 

これで、これらのすべてをvar_dumpでテストすると、それぞれが返されます。

string(19) "2012-04-04 12:06:38" at var_dump($timestamp) 
int(1211612) at var_dump($added) 
bool(true) at var_dump($check) 

私の問題は、14daysが渡されるべき場合でも、次のクエリが常に実行されるということです。私はタイムスタンプを1月の早い日付に変更したのでそれを知っています。ここに私のクエリは次のとおりです。

if ($check === true){ 
    $update = $db->query("UPDATE table SET xy='1' WHERE x='$x'"); 
    } 

何かが間違っているようだと私はそれが何であるか見当もつかない。

+0

'$ query-> fetch_object()'の前のクエリを見てみましょう。 'UNIX_TIMESTAMP()'関数を使ってTIMESTAMPカラムをクエリの整数に変換していますか?そうでなければ、$ timestampは文字列です。 –

答えて

1

私はbarsjuに同意します。 MySQLの結果はDateTimeエントリの文字列であり、実際にはタイムスタンプではありません。 PHP内でそれを保持する別のオプションは、文字列をそのタイムスタンプに変換するstrtotime($string);です。重要なのは、チェックの前にタイムスタンプを取得することだけです。

私はあなたの例のこの行でそれを行うだろう:

$timestamp = strtotime($row->time); 

私が代わりにもタイムスタンプを返すようにMySQLを取得するカップルの他の方法もあると信じています。

+0

正確には、それは変換の問題でした。助けてくれてありがとう。 – bonny

1

文字列とintを追加しようとしているようです。

おそらく、タイムスタンプをintに変換する前にタイムスタンプをintに変換してみてください。あなたは、例えばTO_SECONDS()方法を使用して、タイムスタンプを選択しているとき

クエリで直接それを行うことができます。

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

+0

これはあなたに良いアイデアを与えるかもしれません:http://us2.php.net/manual/en/ref.datetime.php – uotonyh

関連する問題