Мне нужно проверить текущее время на дату-время из базы данных, если это было 30 минут, тогда выполните код, если нет, тогда не. Вот где я нахожусь, и я застрял:
$link = mysqli_connect("hostname", "username", "password", "database"); $q = "SELECT id FROM dwCache ORDER BY id DESC LIMIT 1"; $qu = mysqli_query($link, $q); while($row=mysqli_fetch_array($qu, MYSQL_ASSOC)){ $id = $row['id']; $cache = $row['cache']; $timest = $row['time']; } $newTime = $difference = $timest if($timest >= )
Как вы можете видеть внизу, я теряю его, так как не уверен, что делать.
$timest
возвращает: 2013-02-01 12:36:01
как формат Ymd
his
Извинения за двойной пост, другие удалены.
Сначала конвертировать $ timest в timestamp
$time = strtotime($timest); $curtime = time(); if(($curtime-$time) > 1800) { //1800 seconds //do stuff }
сделать все это в sql-заявлении
SELECT id FROM `dqCache` WHERE `time`<DATE_SUB(NOW(), INTERVAL 30 MINUTE);
Это вернет все из вашей таблицы, где столбец времени до 30 минут до этого.
Мне нравится использовать временные метки unix в этой ситуации.
$timest = date('u'); // gets the unix timestamp $q = "SELECT id FROM `dwCache` WHERE {$timest} - UNIX_TIMESTAMP(`timestamp_col`) > 1800";
Объяснение:
Это в основном вычисляет разницу между текущим временем и временем в столбце таблицы. Если он превышает 1800 (30 минут), он выберет строку, и ваш PHP-код будет выполнен.
преимущества
Есть несколько преимуществ использования этого вместо проверки PHP, которую вы начали делать. Вы будете выбирать меньшее количество строк, тем самым занимая меньше памяти.
PS:
Thumbs для использования MySQLi
!
SELECT id FROM dwCache ORDER BY id DESC LIMIT 1
вы получите только поле id
, это первое. Второй, для преобразования времени: MySQL конвертировать datetime в Unix timestamp
В-третьих: вы можете преобразовать свою строку времени, используя функцию strtotime
.