如何在mysql、php中使用variable-in-between子句?
我正在创建一个按日期搜索功能,它应该通过在两个日期之间搜索来从数据库返回结果。日期以文本格式作为输入 search.php如何在mysql、php中使用variable-in-between子句?,php,mysql,sql,post,Php,Mysql,Sql,Post,我正在创建一个按日期搜索功能,它应该通过在两个日期之间搜索来从数据库返回结果。日期以文本格式作为输入 search.php From: <input type="text" name="date" id="datepicker"> To: <input type="text" name="date2" id="datepicker2"> php代码如下所示: <?php $category = $_GET["category"]; $date1= $_
From: <input type="text" name="date" id="datepicker">
To: <input type="text" name="date2" id="datepicker2">
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=strotime$date1转换日期;但这不起作用。如何修改查询?不确定在数据库中存储日期的格式: 因此,我建议采取以下措施:
<?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注入,我在查询中添加了backticks`
因此,这一定会对您有所帮助。首先,您如何将日期存储在数据库中作为datetime或varchar或其他形式??var_转储$date1、$date2;给你?我可以看到一个明显的SQL注入漏洞。。。始终转义用户的输入或使用准备好的语句。不要在SQL语句中串联变量,尤其是当变量来自请求时。SQL注入的危险@Srikaranshenvisurse不客气,请您也投票表决这个答案。
<?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."' ";
?>