Вот собственно задача. Есть БД mysql. В ней есть таблица: id col1 col2 date 1 100 200 2015-01-01 2 200 300 2016-01-02 3 300 400 2017-02-03 А теперь нужно чтоб скрипт пробежался по базе и сравнил даты с сегодняшней и выдал результат самой приближенной даты но не позже чем сегодня (тоесть 3 строка нам не подходит). С примера выше видно что нужна вторая строка. Поможете? --- Добавлено --- Пришел к такому вариант: PHP: $today=date('Y-m-d'); $sel = mysql_query("SELECT * FROM `oscpv_ins_summ` WHERE date_start<'".$today."' ORDER BY date_start DESC"); $res = mysql_fetch_array($sel); Работает но мне кажется что сильно намудрено
Ну вродь все работает отлично, проверил несколько раз. Просто думал может есть более популярное решение. Всем спасибо.
Запрос рабочий, но добавь LIMIT 1 чтобы не заставлять сервер делать лишнюю работу. Также, если ты в результате используешь только найденную дату, то и укажи явно поле даты вместо *. Также перестань использовать mysql_fetch_array, т.к. он фактически делает двойную работу: одни и те же данные в массиве встречаются дважды. Попробуй однажды var_dump-нуть что там на выходе… … И вообще от mysql_* функций пора отказываться. ))) Они только в старых книжках и устаревшем коде встречаются. Есть mysqli и PDO. Ну и вот такой вариант имей в виду Код (Text): SELECT MAX(datefield) FROM mytable WHERE datefield < :d
а чё как то можно не по два вывести, я и пдо вывожу запрос, у меня в результе массив с двойными данными. Как сделать не с двойными кинь что нибудь иль пример или ман почитать, просто не встречал что-то --- Добавлено --- Можно потом функцией убрать двойные значения. Но зачем, он всё равно их выводит, а потом ещё и уберает, зачем громадить код, я просто вывожу то что нужно и всё.
А ты не смотришь в доках функции которые используешь? https://php.ru/manual/pdostatement.fetchall.html PHP: <?php $stmt = $this->db->prepare('SELECT title, FMarticle_id FROM articles WHERE domain_name =:domain_name'); $stmt->bindValue(':domain_name', $domain); $stmt->execute(); $article_list = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> --- Добавлено --- https://php.ru/manual/pdostatement.fetch.html