То, что я пытаюсь сделать, это отображать статьи за последние 30 дней, но код, который у меня есть, продолжает давать мне ошибку mysql_fetch_assoc, которая затем возвращается к моему запросу
Это код:
$sql = mysql_query("SELECT * FROM table WHERE DATE (datetime) = (CURDATE() - INTERVAL 7 DAY) ORDER BY ID DESC"); while ($runrows = mysql_fetch_array($sql))
Может ли кто-нибудь дать мне указания о том, как правильно заставить код работать правильно? Вот ошибка
Предупреждение: mysql_fetch_array (): предоставленный аргумент не является допустимым ресурсом результата MySQL
Попробуй это:
$sql = mysql_query("SELECT * FROM table WHERE DATE (datetime) > DATE_SUB(CURDATE(), INTERVAL 7 DAY) ORDER BY ID DESC");
Я изменил две вещи:
DATE_SUB()
для вычитания даты. >=
вместо just =
для поиска всех дат за последнюю неделю. Я не думаю, что вам нужно, чтобы вы делали WHERE
. Вместо
WHERE DATE (datetime) = 'CURDATE() - INTERVAL 30 DAY'
пытаться:
WHERE DATE (datetime) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
Что-то вроде:
$sql = mysql_query("SELECT * FROM table WHERE DATE BETWEEN '" . date('Ym-d',strtotime('now')) . "' AND '" . date('Ym-d',strtotime('-30 days')) . "' ORDER BY ID DESC" );
Должно получиться что-то вроде этого:
SELECT * FROM table WHERE DATE BETWEEN '2011-07-26' AND '2011-06-26' ORDER BY ID DESC
Обратите внимание, что date('Ym-d')
– это способ записи дня в вашей базе данных. Так измените его так, как это похоже на вашу БД.