只需尝试一些其他的东西,然后遇到这个问题。 我在示例网站上回显了一些不同的表值,然后从下拉菜单中将数据从“ 1”更改为“ 2”。我只是使用post form操作来执行此操作,但是问题是,当我得到10条不同的输出行时,如何通过下拉菜单获取此确切行的ID? Atm使用此代码时,我只会将所有行值从1更改为2:< / p>
PHP
if (isset($_POST['insert2']))
{
$status2 = $_POST['status2'];
$sql2 = ("UPDATE test3 SET status='$status2' WHERE id=id");
if (mysqli_query($conn, $sql2)) {
header("Location: index.php");
exit;
} else {
echo "Error: " . $sql2 . "<br>" . mysqli_error($conn);
}}
具有回声的HTML
<?php while($row = mysqli_fetch_assoc($result)) { echo
'<div class="box">
<div class="box-id">
<p class="box-id-text">Bonus id: ' . $row ['id'] . '</p>
</div>
<div class="box-date">
<p class="box-date-text">Date laget: ' . $row ['date'] . '</p>
</div>
<div class="box-status">
<div class="box-endre-status">
<p class="box-status-text">Status: Pending,</p>
<form action="" method="post">
<select name="status2" class="endre-status">
<option value="" disabled selected>Endre status</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="submit" name="insert2" value="Oppdater">
</form>
</div>
</div>
</div>';}?>
这是非常新的知识,如果有人可以在正确的方向帮助我,将不胜感激。
答案 0 :(得分:2)
您的问题是您没有传递<form action="" method="post">
值来更新表单。您可以通过向表单添加隐藏的输入来解决此问题;在<input type="hidden" name="id" value="' . $row['id'] . '">
之后向回显中添加类似的内容:
$id = $_POST['id'];
然后在您的PHP中添加
$status2 = $_POST['status2'];
在UPDATE
之后并将您的$sql2 = ("UPDATE test3 SET status='$status2' WHERE id=$id");
查询更改为
id
如果{{1}}是一个字符串,则需要将其用上一行的引号引起来。
您的下一个问题将是您容易受到SQL注入的攻击。为避免这种情况,您将需要使用准备好的语句。 This question很好地说明了如何执行此操作,您还可以查看PHP手册页,了解MySQLi准备的语句here。