我正在创建一个按日期搜索功能,该功能应该通过在两个日期之间搜索来返回数据库中的结果。日期以文本格式输入。
search.php
From: <input type="text" name="date" id="datepicker">
To: <input type="text" name="date2" id="datepicker2">
一般sql查询的格式为
mysql> select name,date from events where category='football'and date
between '2017-09-01' and '2017-09-27' order by name;
php代码如下:
<?php
$category = $_GET["category"];
$date1= $_GET["date"];
$date2= $_GET["date2"];
$result="SELECT * FROM events WHERE category='$category' AND date BETWEEN $date1 AND $date2 ";
?>
我尝试使用$d=strtotime($date1);
转换日期,但这不起作用。如何修改查询?
答案 0 :(得分:0)
不确定您将日期存储在数据库中的格式:
所以我建议你做以下事情:
<?php
$category = $_GET["category"];
$date1= date("Y-m-d", strtotime($_GET["date"]));
$date2= date("Y-m-d", strtotime($_GET["date2"]));
$result="SELECT * FROM `events` WHERE `category`='$category' AND `date` BETWEEN '".$date1."' AND '".$date2."' ";
?>
注意:我刚刚更改了两个日期的日期格式,正如您在提供的示例中所看到的,sql查询中的日期格式为(Y-m-d)。
第二件事:为了避免mysql注入,我在查询中添加了反引号(`)。
所以这必须帮助你。