【发布时间】:2021-06-23 19:08:35
【问题描述】:
我尝试做一个 php 站点,您可以在其中从 select 中选择组件。选择的组件应由数据库中的 SELECT 返回。接下来,您可以通过 UPDATE 更改此表中的值。每行的最后一条记录是一个输入,其中显示组件的价格和按钮(输入提交)。我的问题是如何使用此按钮在输入中设置值并更新表格。以下是我的数据库和网站的屏幕截图。我尝试了很多东西,现在我可以了:
<form method="GET" action="sklep2.php">
<font>Lista aktualnie dostępnych podzespołów</font>
<select id="selekt" name="selekt">
<option value="1">Procesory</option>
<option value="2">Ram</option>
<option value="5">Karty graficzne</option>
<option value="6">Dyski</option>
</select>
<input type="submit" value="zatwierdź" name="submit">
<table id="tabela">
<tr id="first"><td>NAZWA PODZESPOŁU</td><td>OPIS</td><td>CENA</td></tr>
<?php
$conn = mysqli_connect('localhost', 'root', '', 'sklep');
if(isset($_GET['submit'])){
$typy_id = $_GET['selekt'];
$sql = "SELECT nazwa, opis, cena, id FROM podzespoly WHERE typy_id = $typy_id";
$result = mysqli_query($conn, $sql);
echo '<form action="sklep2.php" method="GET">';
if (mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_assoc($result)){
echo '<tr><td>'.$row['nazwa'].'</td><td>';
echo $row['opis'].'</td><td>';
echo '<input id="new_price" type="number" value="'.$row['cena'].'">';
echo '<input style="display:none" id="id" value="'.$row['id'].'">';
echo '<input type="submit" id="submit1" name="submit1">';
}
}
echo '</form>';
if(isset($_GET['submit1'])){
$id = $_GET['id'];
$price = $_GET['new_price'];
$upd = "UPDATE podzespoly SET cena = $price WHERE id = $id";
if (mysqli_query($conn, $upd)) {
echo "successfully updated";
}
}
}
mysqli_close($conn)
?>
</table>
</form>
【问题讨论】:
-
您对 SQL 注入持开放态度。参数化您的查询并使用准备好的语句。您的
inputs 缺少names...form中的form可能会导致问题。 -
@user3783243 表单中的表单确实会导致问题。 HTML 中不允许嵌套表单。内部形式根本行不通。