PHP 始终使用 Post 参数评估为 false

PHP always evaluating to false with Post parameters

我已经查看了 Stack Overflow 并发现了非常相似的问题(例如这个问题):if (!empty ($_POST)) not working

下面的代码总是回显 "Post is empty",即使 post 使用以下 URL 编辑:http://localhost/gui.php?sql=Select+*+from+Constituents%3B

        <form>
        SQL Query: <input type="text" name="sql"><br>
        <input type="submit" value="Query">
        </form>
        <?php 
        if(!empty($_POST["sql"])){
            $sql = $_POST["sql"];
            $result = $conn->query($sql);

            if ($result->num_rows > 0) {
            // output data of each row
                while($row = $result->fetch_assoc()) {
                    echo "Name: " . $row["firstName"]. " " . $row["lastName"]. "<br>","Address: ", $row["address"], ", ", $row["city"],", ",$row["state"],", ",$row["zip"],"<br>","Phone: ", $row["phone"], ", ",$row["email"],"<br><br>";
                }
            } else {
                echo "No results for query";
            }
        }
        else{
            echo "Post is empty";
        }

我已经尝试切换到使用 isset 函数,运行 post 上的计数,以及其他东西,但我总是点击 echo "Post is empty";声明不管发生什么。我确定这是一个非常简单的问题。

原因是您的 <form> 没有 contain/specifiy POST 方法。

如果省略该方法,则表单默认为 GET。

因此需要修改为<form method="post">


需要提及的旁注:

此外,关于 SQL injection which you are open to, use mysqli with prepared statements, or PDO with prepared statements它们更安全

  • 永远不要相信用户输入。

你忘了写表单方法.. 您应该在表单中添加方法标签并将其设置为 post

<form method="post">