SQL-запрос пропускает строку внутри цикла PHP for

Я пытаюсь создать расписание с помощью PHP и mysql.

В основном у меня есть цикл for, который идет от 600 до 2200, и внутри этого цикла другой цикл, который идет от 1 до 7 для каждого дня недели.

Внутри моего второго цикла for я ищу в своей базе данных событие, в котором day равно моей итерации внутри моего второго цикла, а начало и конец находятся в пределах диапазона моего первого цикла for. У меня есть два события, которые нужно вернуть. Однако он пропускает первый и возвращает только второй.

Вот мой код:

        $week = 1;
        for($i = 600; $i <=2200; $i += 25){
            echo $i .'</br>';
            for($j = 1; $j < 8; $j++){
                echo $j .'</br>';
                $query = 'SELECT * FROM `event` WHERE `week` =:week AND `day` =:day AND (`start` <=:start AND `end` >=:start)';
                $stmt = $dbh->prepare($query);
                $stmt->bindParam(':week', $week);
                $stmt->bindParam(':day', $j);
                $stmt->bindParam(':start', $i);
                if ($stmt->execute()){
                    if ($stmt->rowCount() > 0){
                        $row = $stmt->fetch(PDO::FETCH_ASSOC);
                        print_r($row);
                    }
                }
            }

Я тоже пробовал

SELECT *
FROM `event`
WHERE `week` =:week AND `day` =:day AND (:start  BETWEEN `start` AND `end`)

и в обоих случаях я получаю одинаковый результат.

Вот что находится внутри моей таблицы событий SQL-запрос пропускает строку внутри цикла PHP for

как только $ i становится равным 900, он должен вернуть строку с идентификатором 9, но это не так, но когда $ i равно 1875, он распечатывает это событие.

Вот изображение, когда я пытаюсь поместить его прямо в phpmyadmin

SQL-запрос пропускает строку внутри цикла PHP for

Кто-нибудь может понять, почему это так?

Это кажется действительно неэффективным способом запроса базы данных MySQL. Почему вы в первую очередь используете эти петли? Покажите нам пример ввода / вывода и объясните, что вы здесь пытаетесь сделать.

Tim Biegeleisen 02.09.2018 15:47

Когда вы запускаете SQL с параметрами жесткого кода, когда :start = 900 работает?

dWinder 02.09.2018 15:48

@Tim Biegeleisen Я пытаюсь создать расписание, $ i - это время с 6:00 до 22:00, а $ j - день недели. Выходные данные - просто проверить прямо сейчас, он отображает время $ i, а затем повторяет $ j для каждого дня. При $ i = 900 я ожидаю print_r моей строки, но это не так, тогда при $ i = 1875 выводится событие id = 4.

user2989367 02.09.2018 15:52

@ Дэвид Уиндер: да, я добавлю картинку в свой пост, чтобы показать.

user2989367 02.09.2018 15:55

Я не вижу, чтобы переменные $ day и $ start были установлены заранее, как будто установлена ​​$ week, может быть, в этом проблема? и я согласен с @Tim Biegeleisen, проблему можно лучше решить с помощью одного запроса MySQL, например

Guy Louzon 02.09.2018 16:01

@GuyL start и day - это $ i и $ j соответственно

user2989367 02.09.2018 16:03

Но их первое распределение происходит только после, выполняется 1-я итерация запроса.

Guy Louzon 02.09.2018 16:12

@GuyL Я не уверен, что вы имеете в виду, $ i и $ j определены перед запросом: start и: day привязывают их к соответствующим переменным.

user2989367 02.09.2018 16:15

прочитайте свой код, вы привязываете $ i и $ j после, SQL-запрос выполняется, это означает, что на 1-й итерации они не связаны

Guy Louzon 02.09.2018 16:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
51
1

Ответы 1

Проблема заключалась в типах данных start и end, просто понял, что они были varchar, а не int.

Другие вопросы по теме