SQL-запрос, пропускающий строку внутри PHP для цикла - PullRequest
0 голосов
/ 02 сентября 2018

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

В основном у меня есть цикл A 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`)

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

Вот что находится внутри моей таблицы событий enter image description here

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

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

enter image description here

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

1 Ответ

0 голосов
/ 02 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...