您好我在使用sqlite数据库管理我构建的系统(用php和html编写)的预订。我已设法连接到数据库并运行一个运行的简单计数查询(请参阅下面的代码)。但是我发现很难执行一个允许我选择两个日期之间的保留的查询,即(2018-02-20和2018-02-25)。我还附上了我的数据库的屏幕截图,用于可视化目的。
计数查询代码:
<?php
$db = new PDO('sqlite:daypilot.sqlite');
$query = 'SELECT count(*) FROM events;';
$result = $db->query($query);
$data = $result->fetch(PDO::FETCH_ASSOC);
echo "There are {$data['count(*)']} bookings made\n";
?>
答案 0 :(得分:0)
由于您将输入传递给查询,因此您需要使用预准备语句而不仅仅是query()
。看起来您的事件表有两个日期,因此以下查询应该捕获与指定日期范围重叠的所有事件。
$start = '2018-02-20';
$end = '2018-02-25';
$sql = 'SELECT * FROM events WHERE `end` > ? AND `start` < ?';
$stmt = $db->prepare($sql);
$stmt->execute([$start, $end]);
$events = $stmt->fetchAll();
foreach ($events as $event) {
var_dump($event); // output with your desired formatting here
}