Я пытаюсь создать расписание с использованием 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`)
и в обоих случаях я получаю одинаковый результат.
Вот что находится внутри моей таблицы событий
как только $ i равен 900, он должен вернуть строку с идентификатором 9, но это не так, но когда $ i равен 1875, он выводит это событие на печать.
Вот картинка, когда я пытаюсь поместить ее прямо в phpmyadmin
Кто-нибудь может понять, почему это так?