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">
我已经查看了 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">