Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 $\u POST值返回空/空_Php_Mysql_Ajax - Fatal编程技术网

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'], '/', '-');
...
}