【发布时间】:2020-04-11 19:12:46
【问题描述】:
我开始了 php 课程。现在我已经“学习”了如何将 sql-data 显示到 html-table 中。以下问题现在超出了我的知识范围......但我仍然有兴趣解决它,因为它会对我有所帮助。我找到了一些解决方案,但与mysql无关。
我有一个包含三列的 mysql-view:Brewery、City 和 Beer。 我想让客户可以从下拉列表中选择城市。为此,我创建了一个表单操作:
<?php $CityShow = 'All' ?>;
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post' name='form_filter' >
<h2>City</h2>
<?php
$resultSet = $Verbindung->query("SELECT DISTINCT City FROM breweries");
?>
<select name = 'City'>
<?php
echo"<option selected value = $City>All</option>";
while ($rows = $resultSet->fetch_assoc())
{
$City = $rows ['City'];
echo"<option value = '{$City}'>{$City}</option>";
};
?>
<input type='submit' value = 'Send'>
<!-- <?php $CityShow = $_POST["City"]; ?>; -->
</select>
这很好用,客户可以选择城市,表格是动态构建的。
<?php
if($CityShow == '' || $CityShow == 'All'){
$SQL = "SELECT * from Breweries";
}
else{
$SQL = "SELECT * from Breweries where city = '$CityShow'";
}
$Ergebnis = $Verbindung->query($SQL);
?>
<!-- fill table-->
<?php
if($Ergebnis->num_rows > 0) {
echo "<table><tr><th>Brewery</th><th>City</th><th>Beer</th></tr>";
while($row = $Ergebnis->fetch_assoc()){
echo"<tr>";
echo "<td>" . $row['Brewery'] . "</td>";
echo "<td>" . $row['City'] . "</td>";
echo "<td>" . $row['Beer'] . "</td>";
echo"</tr>";
}
echo "</table>";
}
?>
我想,这不是最好的方法,但它对我有用。
我的问题: 目前,当使用提交按钮选择一个城市时,焦点总是变回“全部”(这是一个选项,不在数据库中 - 其目的是显示所有记录)。我想保留专注于所选城市。
伊夫
【问题讨论】:
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将任何数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。