Php $\u POST值返回空/空
我有一个表单,用户可以根据选择的日期检索数据。以下是我所拥有的:Php $\u POST值返回空/空,php,mysql,ajax,Php,Mysql,Ajax,我有一个表单,用户可以根据选择的日期检索数据。以下是我所拥有的: <form class="form" method="post"> <div class="form-row"> <div class="form-group col-md-2 col-5"> <label class="col-form-label c
<form class="form" method="post">
<div class="form-row">
<div class="form-group col-md-2 col-5">
<label class="col-form-label col-form-label-sm" for="From">From</label>
<input type="date" class="form-control" id="fromDate" name="fromDate" value="<?php echo (new DateTime('first day of this month'))->format('Y-m-d');?>">
</div>
<div class="form-group col-md-2 col-5">
<label class="col-form-label col-form-label-sm" for="To">To</label>
<input type="date" class="form-control" id="toDate" name="toDate" value="<?php echo (new DateTime('today'))->format('Y-m-d');?>">
</div>
<div class="form-group col-md-1 col-2">
<label class="col-form-label col-form-label-sm text-white" for="Search">Search</label>
<input type="button" class="btn btn-success btn-block" id="submit" name="submit" value="Submit" onclick="getResult()">
</div>
</div>
</form>
<div id="data_result"></div>
问题是,
$fm
和$to
返回一个空值(1970-01-01),这就是为什么在var\u转储($\u POST)时我无法获得所需的正确数据的原因代码>返回数组(2){[“fm”]=>string(10)“2021-01-01”[“to”]=>string(10)“2021-01-26”}
。所以我认为这里的主要问题是我无法从表单中获取输入值。为什么会这样?问题是您没有在$\u POST上使用正确的索引
您应该使用在ajax中发送的相同索引:fm
和to
更改此项:
if(isset($_POST['fromDate'],$_POST['toDate']))
{
$date1 = strtr($_POST['fromDate'], '/', '-');
$fm = date('Y-m-d',strtotime($date1));
$date2 = strtr($_POST['toDate'], '/', '-');
$to = date('Y-m-d',strtotime($date2));
} else {
var_dump($_POST);
}
为此:
if(isset($_POST['fm'], $_POST['to']))
{
$date1 = strtr($_POST['fm'], '/', '-');
$fm = date('Y-m-d',strtotime($date1));
$date2 = strtr($_POST['to'], '/', '-');
$to = date('Y-m-d',strtotime($date2));
} else {
var_dump($_POST);
}
另外:你应该看看SQL注入和@草莓建议的准备好的查询
我鼓励您在发送ajax调用时使用转换为面向对象的方法,data:{fm:fm,to:to}这就是使用的方法。
尝试更改:
if (isset ($_POST['fromDate'], $_POST['toDate']))
{
$date1 = strtr($_POST['fromDate'], '/', '-');
...
$date2 = strtr($_POST['toDate'], '/', '-');
...
}
借
$\u POST中的索引是fm
和to
(因为您在AJAX调用的数据
值中指定了这些参数名),但您正在尝试访问$\u POST['fromDate']
和$\u POST['toDate']
。请参阅关于sql注入以及准备和绑定查询的重要性sql注入WHERE date>='$fm'
一直以来,我都认为必须使用输入名称来检索值。是的,我有另一个使用PDO的版本。谢谢你,我没想到。它解决了我的问题。非常感谢。
if(isset($_POST['fm'], $_POST['to']))
{
$date1 = strtr($_POST['fm'], '/', '-');
$fm = date('Y-m-d',strtotime($date1));
$date2 = strtr($_POST['to'], '/', '-');
$to = date('Y-m-d',strtotime($date2));
} else {
var_dump($_POST);
}
if (isset ($_POST['fromDate'], $_POST['toDate']))
{
$date1 = strtr($_POST['fromDate'], '/', '-');
...
$date2 = strtr($_POST['toDate'], '/', '-');
...
}
if (isset ($_POST['fm'], $_POST['to']))
{
$date1 = strtr($_POST['fm'], '/', '-');
...
$date2 = strtr($_POST['to'], '/', '-');
...
}