2012-04-04 5 views
0

У меня проблема с меткой времени. я хотел бы проверить временную метку, если это в прошлом или в будущем. если это было в прошлом, запрос должен произойти.запрос timestamp не работает

до этого момента я получил MySQL-временную метку, которая будет извлекалось

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

, который содержит:

2012-04-04 12:06:38 

для дальнейшей настройки я использую еще две переменные, которые будут:

$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 дней. Я знаю, потому что я изменил метку времени до более ранней даты в январе. вот мой вопрос:

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, прежде чем добавлять к ней константу.

Вы можете сделать это непосредственно в запросе, когда вы выбираете метку времени, используя, например, метод 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

Смежные вопросы