使用mysql、php和pdo在datetimepicker输入上过滤数据库中的数据

snvhrwxg  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(510)

我尝试在two datetimepicker中基于输入进行搜索,并将结果显示到表中,但是当我选择特定的日期时,所有数据都会显示出来。我正在使用mysql和pdo。
这是我的密码。

<?php
$date1 = date("Y-m-d", strtotime($_POST['date1']));
$date2 = date("Y-m-d", strtotime($_POST['date2']));

$db = new PDO('mysql:host=localhost;dbname=db_search;charset=utf8mb4', 
'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$sql = "select * from book";
$stmt = $db->prepare($sql);
$stmt->execute(); 
$row_count = $stmt->rowCount();
if($row_count > 0){
while($row=$stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<tr>
    <td><?php echo $row['ISBN']?></td>
    <td><?php echo $row['title']?></td>
    <td><?php echo $row['author']?></td>
    <td><?php echo date("m/d/Y", strtotime($row['date_published']))?></td>
</tr>
<?php
}
}else{
    echo '
    <tr>
        <td colspan = "4"><center>Record Not Found</center></td>
    </tr>
    ';
}
?>
l3zydbqr

l3zydbqr1#

实际上,您还没有在查询中包含日期条件,这就是为什么它仍然返回所有数据的原因。将查询更改为

$sql = "select * from book where date_published between '" . min($date1, $date2) . "' and '" . max($date1, $date2) . "'";

如果你知道的话 $date1 小于 $date2 ,你可以简化为

$sql = "select * from book where date_published between '$date1' and '$date2'";

请注意,您的代码对sql注入是完全开放的,您应该真正使用准备好的语句。查看此问题了解更多信息。。。

相关问题