Нужно обновить в базе информацию, если с момента изменения прошло больше 3-х суток. Поле last_edit
содержит время в формате UNIX. Делаю так:
$last_edit = 259200; // 3 суток
$this_time = time() - $last_edit; // сколько прошло
$db->query( "UPDATE tablename set status = '0' WHERE last_edit >= ({$this_time} - last_edit) AND revision = '1'" );
В результате изменяются данные постоянно.
Логично
last_edit >= ({$this_time} - last_edit)
2 * last_edit >= $this_time
любая дата обновления, умноженная на два, будет больше текущей даты.
Должно быть
UPDATE tablename set status = 0 WHERE last_edit <= {$this_time} AND revision = 1
А еще лучше убрать переменную $this_time
вообще
UPDATE tablename set status = 0 WHERE last_edit <= NOW() - 3600 * 24 * 3 AND revision = 1
P.S. И не нужно в запросе числа обрамлять в кавычки
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Выводит запись с id = 1, а должно с id = 2Причем обычным запросом:
Допустим есть таблица users в которой 40 записей
есть такие запросыЕсли первый,второй,третий я понял, то что делает четвертый? И можно ли его переписать без использования временной таблицы