我无法通过下拉列表获得$ _POST

时间:2014-08-12 06:32:27

标签: php drop-down-menu mysqli

我遇到的一个问题是,有很多人写过教程,但是当它们过时时没有删除它们。对于初学者来说,这非常令人困惑。我现在开始检查所有教程的日期。 对不起,这是一个题外话。我可以得到一个结果页面,显示数据库中的所有内容,但当我尝试使用下拉菜单进行优化时,我得到一个空白页面。我已经阅读了我能找到的所有内容并尝试了这些建议但是我在四五个小时之后没有到达任何地方所以我又来了。

这是下拉列表。它转到页面但没有显示结果。

 <form action="search2.php" method="post">

<?php


$mysqli = new mysqli(localhost,user,password,database);

if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

$query = "SELECT DISTINCT Country FROM engravers ORDER BY Country";
$result = $mysqli->query($query);

?>
<select  name ="dropdown">
<?php

while ($row = $result->fetch_assoc()) {
    echo "<option value=\"{$row['Country']}\">";
    echo $row['Country'];
    echo "</option>";
}
$mysqli->close();
?>
</select>

<input type="submit" />   
        </form>

这使得下拉菜单符合预期,但点击提交没有结果。这是我要去的地方。

<?php

$mysqli = new mysqli(localhost,user,password,database);

if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

if(isset($_POST['submit'])){

}

$results = $mysqli->query("SELECT * FROM engravers WHERE Country = $_POST['Country']");

$img_url = "http://www.engravedstamps.net/images/";  
print '<table border="1" >';
while($row = $results->fetch_assoc()) {
 print '<tr>';
 print '<td>'.$row["Key"].'</td>';
 print '<td>'.$row["Country"].'</td>';
 print '<td>'.$row["Year"].'</td>';
 print '<td>'.$row["Description"].'</td>';

 print  '<td>'.'<img src="'.$img_url.$row['Images'].'" />'.'</td>'; 
 print '</tr>';
 }  
 print '</table>';


$results->free();

$mysqli->close();
?>

3 个答案:

答案 0 :(得分:0)

您的下拉列表被命名为“下拉列表”,因此您可以使用$_POST['dropdown']读取该值。在search2.php中,您使用了$_POST['Country']

编辑:小心SQL注入。在您学习的过程中,请注意这一点。禁止将直接变量利用率放入查询中,以支持准备好的查询。

答案 1 :(得分:0)

更改

$results = $mysqli->query("SELECT * FROM engravers WHERE Country = $_POST['Country']");

要:

$results = $mysqli->query("SELECT * FROM engravers WHERE Country = $_POST['dropdown']");

因为你有:

<select  name ="dropdown">

答案 2 :(得分:-1)

你有一个SQL注入错误,过滤$ _POST [&#39;下拉&#39;]。

$results = $mysqli->query("SELECT * FROM engravers WHERE Country = $_POST['Country']");