Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
使用php变量和SQL语句的日期范围过滤器_Php_Jquery_Mysql_Sql_Variables - Fatal编程技术网

使用php变量和SQL语句的日期范围过滤器

使用php变量和SQL语句的日期范围过滤器,php,jquery,mysql,sql,variables,Php,Jquery,Mysql,Sql,Variables,我正在尝试使用MySQL表的“to”和“From”日期范围过滤器为表创建一个过滤器。我无法获取所选日期以查询信息 仅在选择日期时显示数据。如果日期为空输入字段,则该表应显示所有行和数据 表: | Username | Full Name | Manager | Review Date | Total Score | |-------------------------------------------------------------| | sjohn | J

我正在尝试使用MySQL表的“to”和“From”日期范围过滤器为表创建一个过滤器。我无法获取所选日期以查询信息

仅在选择日期时显示数据。如果日期为空输入字段,则该表应显示所有行和数据

表:

    | Username | Full Name | Manager  | Review Date | Total Score |
    |-------------------------------------------------------------|
    | sjohn    | John Smith| John Dow | 2015-01-31  |    80%      |
    | sjane    | Jane Smith| John Dow | 2015-02-01  |    80%      |
    | jmike    | Mike Dow  | Jane Dow | 2015-02-02  |    75%      |
    | dmia     | Mia Dow   | Rob Smith| 2015-02-10  |    90%      |
如果我创建一个带有输入字段的表单,我希望使用Review Date列按“fromDate”和“toDate”日期查询表

问题:由于某些原因,变量没有存储或传递到SQL语句

<form action="eerevuiew.php" method="POST">
<label for="from">From</label> 
<input type="text" id="datepicker" name="fromDate"/> 
<label for="to">to</label> 
<input type="text" id="datepicker2" name="toDate"/> 
<input name="" type="submit" /> 
</form>

<?php
$min = intval($_POST['fromDate']);
$max = intval($_POST['toDate']);
?> 

<?php

$con = mysqli_connect('localhost','root','123456','employeescore');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"employeescore");
$sql="SELECT * FROM vwscore WHERE reviewdate BETWEEN '".$min."' AND '".$max."'";
$result = mysqli_query($con,$sql);
?>



<?php
echo "<table border='1'>
<tr>
<th>Username</th>
<th>Full Name</th>
<th>Manager</th>
<th>Review Date</th>
<th>Total Score</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['display_name'] . "</td>";
echo "<td>" . $row['manager'] . "</td>";
echo "<td>" . $row['reviewdate'] . "</td>";
echo "<td>" . $row['total_score'] . "</td>";
echo "</tr>";
}
echo "</table>"; 
?>

从…起
到
我正在为日期选择器使用jQuery函数


谢谢你的帮助

一些可能对您有帮助的信息

  • 您应该检查POST参数是否存在,也可能检查它们是否为空。如果是这种情况,则查询可以返回所有行。我想这就是你的意思:
  • 如果日期为空输入字段,则该表应显示所有行 和数据

  • 我不明白为什么要使用
    intval()
    -函数。您的日期似乎采用了yyyy-mm-dd格式。
    intval()
    将尽力从中获取有效数字。这可能会将“2015-02-01”转换为“2015”,因为
    intval()
    不会管理虚线。如果对日期使用yyyy-mm-dd格式,查询将正常工作
  • 可能的解决办法:

    $sql = "SELECT * FROM vwscore"; // Would display all rows
    if(isset($_POST['fromDate']) && !empty($_POST['fromDate']) && isset($_POST['toDate']) && !empty($_POST['toDate'])){ // if both dates are set and not empty...
        $sql .= " WHERE reviewdate BETWEEN '".$_POST['fromDate']."' AND '".$_POST['toDate']."'"; // ...filter dates
    }
    $result = mysqli_query($con,$sql);
    

  • 重要提示:请注意,即使您使用日期选择器,也强烈建议您转义用户输入(
    mysqli\u real\u escape\u string()
    )。

    我可以配置代码。我只是从提供的链接中找到了答案。但是,我会将(mysqli_real_escape_string()添加到我的编码中。


    再次感谢大家的帮助。

    在最小值和最大值中得到的值是什么?在SQL中使用这些值之前,不应该信任用户输入并使用转义方法!您好,输入的值来自a数据采集器。例如2015-01-01和2015-02-01。只有在我从日历日期采集器中选择这些值时,我希望这有意义。thanksI了解这一点,但打印时,$min和$max中的实际值是什么?yyyy-mm-dd。它看起来与格式匹配。很抱歉不清楚。行“mysqli\u select\u db($con,“employeescore”);”是不必要的,因为employeescore是在mysqli\u connect中定义的。请参阅