Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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 使用Jquery$.post时查询不起作用_Php_Jquery_Sql_Ajax - Fatal编程技术网

Php 使用Jquery$.post时查询不起作用

Php 使用Jquery$.post时查询不起作用,php,jquery,sql,ajax,Php,Jquery,Sql,Ajax,当我通过post将表单信息发送到流程页面时,这个查询运行良好。它呈现预期的信息。但是当我通过jquery通过$.post调用发送post信息时,我什么也得不到。如果我在查询中省略以registered_datetime开头的部分,它将按预期工作 我不得不相信这是我忽略的东西 以下是查询: SELECT * FROM leads WHERE (first_name LIKE '" . $_POST['name'] . "%' OR last_name LIKE '". $_POST['name

当我通过post将表单信息发送到流程页面时,这个查询运行良好。它呈现预期的信息。但是当我通过jquery通过$.post调用发送post信息时,我什么也得不到。如果我在查询中省略以registered_datetime开头的部分,它将按预期工作

我不得不相信这是我忽略的东西

以下是查询:

SELECT * FROM leads 
WHERE (first_name LIKE '" . $_POST['name'] . "%' 
OR last_name LIKE '". $_POST['name'] ."%') OR
registered_datetime BETWEEN '". date_fix($_POST['from_date']) ."' AND '" . date_fix($_POST['to_date']) . "'";
以下是包含jquery和表单的索引页:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </script>
    <script>
        $(document).ready(function(){
            $('#search').keyup(function(){
                $('#test_form').submit();
            });
            $('#test_form').submit(function(){
                $.post(
                        $(this).attr('action'),
                        $(this).serialize(),
                        function(data){
                            $('#results').html(data.html);
                        },
                        "json"
                    );
                return false;
            });
            $('#test_form').submit();
        });
    </script>
</head>
<body>
    <form id="test_form" action="process.php" method="post">
        Name: <input type="text" name="name" id="search">
        From: <input class="datepicker" type="text" name="from_date" id="from_date">
        To: <input class="datepicker" type="text" name="to_date" id="to_date">
    </form>
    <div id="results"></div>
</body>
以下是流程页面:

require_once('connection.php');
    function date_fix($date) {
        $fix = explode('/', $date);
        $new_date = $fix[2] . '-' . $fix[0] . '-' . $fix[1];
        return $new_date;
    }
    // var_dump($_POST);
    $query =  "SELECT * FROM leads 
               WHERE (first_name LIKE '" . $_POST['name'] . "%' 
               OR last_name LIKE '". $_POST['name'] ."%') OR
               registered_datetime BETWEEN '". date_fix($_POST['from_date']) ."' AND '" . date_fix($_POST['to_date']) . "'";
    // var_dump($_POST);
    // var_dump($query);
    $users = fetchAll($connection, $query);
    $data = array();
    $html = "
    <table>
        <thead>
            <tr>
                <th>User ID</th>
                <th>First Name</th>
                <th>Last Name</th>
                <th>Registered Datetime</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
        ";

    foreach ($users as $user) {
        $html .= 
            '<tr>
                 <td>' . $user['id']  . '</td>
                 <td>' . $user['first_name']  . '</td>
                 <td>' . $user['last_name']  . '</td>
                 <td>' . $user['registered_datetime']  . '</td>
                 <td>' . $user['email']  . '</td>
            </tr>';
    }
    $html .= '</tbody></table>';

    $data['html'] = $html;
    // echo $data['html'];
    echo json_encode($data);

我解决了这个问题。事实上,我是在脚本末尾提交表单的,因此重置了提交的信息

 <script>
        $(document).ready(function(){
            $('#search').keyup(function(){
                $('#test_form').submit();
            });
            $('#test_form').submit(function(){
                $.post(
                        $(this).attr('action'),
                        $(this).serialize(),
                        function(data){
                            $('#results').html(data.html);
                        },
                        "json"
                    );
                return false;
            });
            $('#test_form').submit(); // IF I OMIT THIS IT WILL WORK AS EXPECTED.
        });

我没有看到任何东西阻止我窃取你数据库中的所有信息,然后将其全部删除。使用预先准备好的语句。好的,从中获取数据。仍然无法回答我的问题,而且它也从未尝试过。m59使用注释为您提供了合理的建议。这就是他们的目的。好吧,我很感激你的关心,也许我真的想得太多了,但是1。这是本地存储上的测试数据库。因此,窃取数据的可能性很小。我错过什么了吗?我问查询或ajax调用是否有什么奇怪的地方,因为它没有按预期检索数据。我不知道为什么会被否决。@m59我离这个问题已经很远了。一年多前我还没有受过教育,根本不知道准备好的声明是什么。现在,这是我用来确保我构建的应用程序安全性的方法之一。我嘲笑自己在评论中发飙。无论如何,很抱歉,这是非常不必要的评论。但我在回顾我的老问题。