【问题标题】:POST query from user input on button click单击按钮时来自用户输入的 POST 查询
【发布时间】:2013-12-11 10:30:33
【问题描述】:

这就是我想要做的。我让用户输入 DATEFROM 和 DATETO。然后,当用户单击该按钮时,它将执行从我的表 WHERE DATEFROM BETWEEN DATETO 中选择 * 的查询。我不知道怎么了。请帮忙。

<html>
    <head></head>
    <body>
        <?php
        <form method="POST" action="">
        DATE FROM: <input type="date" name="datefrom"> TO: <input type="date" name="dateto"> <input type="submit" value="Extract excel file" name="extract"></input>
        </form>

        $datefrom = "datefrom";
        $dateto = "dateto";

        if(isset($_POST['extract'])){
            mysql_connect("localhost", "root");
            mysql_select_db("sample");

            $myquery = "SELECT * FROM biometrics WHERE date_created BETWEEN '" . $datefrom . "' AND '" . $dateto . "ORDER BY id_biometrics";


            $result = mysql_query($myquery);

            echo "<table border='1'>
            <tr>
                <th>ID</th>
                <th>Employee Number</th>
                <th>Date Created</th>
                <th>Time Created</th>
                <th>Status</th>
            </tr>";

            while($data = mysql_fetch_row($result))
            {
                echo("<tr>
                <td>$data[0]</td>
                <td>$data[1]</td>
                <td>$data[2]</td>
                <td>$data[3]</td>
                <td>$data[4]</td>
                </tr>");
            }

            echo "</table>";

        }

        ?>
    </body>
</html>

【问题讨论】:

    标签: php mysql database post input


    【解决方案1】:

    为什么这一行没有密码。

    mysql_connect("localhost", "root");
    

    希望 date_created 列是 Date 或 Datetime 格式。它不能是 int 或 varchar 或任何其他东西。

    并且还在 ORDER BY 之前添加引号。

       $myquery = "SELECT * FROM biometrics WHERE date_created BETWEEN '" . $datefrom . "' AND '" . $dateto . "' ORDER BY id_biometrics";
    

    【讨论】:

    • 因为我在 myphpadmin 中没有密码。关于日期或日期时间,我去看看。谢谢。 :D
    • 如果您没有密码,请将其设置为空值。必须是 mysql_connect("localhost", "root", "");
    【解决方案2】:

    你在查询中错过了一个引号('),试试这样

    if(isset($_POST['extract'])){
            mysql_connect("localhost", "root");
            mysql_select_db("sample");
    
              $datefrom = $_POST['datefrom'];
              $dateto = $_POST['dateto'];
    
            $myquery = "SELECT * FROM biometrics WHERE date_created BETWEEN '" . $datefrom . "' AND '" . $dateto . "' ORDER BY id_biometrics";
    
    
            $result = mysql_query($myquery);
    

    希望这对你有用

    【讨论】:

    • 成功了!!太感谢了。现在我必须将它提取到 csv 文件中。再次非常感谢。 :D
    【解决方案3】:

    你错过了',应该是

    "SELECT * 
           FROM biometrics 
           WHERE date_created 
           BETWEEN '" . $datefrom . "' AND '" . $dateto . "' ORDER BY id_biometrics";
                                                           ^
                                                           ^ 
    

    【讨论】:

      【解决方案4】:

      你可以试试这个吗,你需要在ORDER BY之前添加空格

      mysql_connect("localhost", "root", "");
      
      $myquery = "SELECT * FROM biometrics WHERE date_created BETWEEN ('" . $datefrom . "' AND '" . $dateto . "') ORDER BY id_biometrics";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-17
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        • 2019-06-08
        • 1970-01-01
        • 2013-07-11
        • 2020-05-17
        相关资源
        最近更新 更多