Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql、php中使用variable-in-between子句?_Php_Mysql_Sql_Post - Fatal编程技术网

如何在mysql、php中使用variable-in-between子句?

如何在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= $_

我正在创建一个按日期搜索功能,它应该通过在两个日期之间搜索来从数据库返回结果。日期以文本格式作为输入

search.php

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."'  ";

?>