0

タイムスタンプの問題があります。タイムスタンプが過去か未来かを確認したいと思います。過去の場合は、クエリが発生するはずです。

この時点までに、取得されるmysql-timestampを取得しました

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

以下を含む:

2012-04-04 12:06:38

さらに設定するには、次の2つの変数を使用します。

$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)

私の問題は、14日が経過した場合でも、次のクエリが常に実行されることです。1月にタイムスタンプを以前の日付に変更したので、私はそれを知っています. ここに私のクエリがあります:

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

何かが間違っているようで、それが何であるかわかりません。

4

2 に答える 2

1

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

私はあなたの例のこの行でそれを行います:

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

代わりにMySQLにタイムスタンプを返させるには、他にもいくつかの方法があると思います。

于 2012-04-04T23:49:33.593 に答える
1

文字列と整数を追加しようとしているように見えます。

定数を追加する前に、タイムスタンプを int に変換してみてください。

たとえば、次のTO_SECONDS()メソッドを使用してタイムスタンプを選択しているときに、クエリで直接実行できます。

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

于 2012-04-04T23:42:21.483 に答える