【发布时间】:2017-07-20 05:26:10
【问题描述】:
我有一个通过 PHP/MySQL 输出的项目列表。我在一列中还有一个编辑按钮和一个删除按钮。我试图弄清楚如何通过单击“删除”按钮来删除特定行上的列表项。我尝试了以下方法:
$id = $_GET['id'];
if(isset($_POST["deletelist"])) {
$query = "SELECT * FROM lists";
$result = mysqli_query($db, $query);
if(mysqli_num_rows($result) == 1) {
$query = "DELETE FROM lists WHERE id = '$id'";
} else {
echo "Cannot delete";
}
}
这当然行不通。谁能帮我解决这个问题?
更新
这是整个页面的代码:
https://pastebin.com/raw/qjnZkUU2
更新代码
$id = $_GET['id'];
if(isset($_POST["deletelist"])) {
$query = "SELECT * FROM lists";
$result = mysqli_query($db, $query);
if(mysqli_num_rows($result) == 1) {
$query = "DELETE FROM lists WHERE id = '$id'";
mysqli_query($db, $query);
} else {
echo "Cannot delete";
}
}
我很困惑的是查询如何知道要删除哪个项目?我是否应该将 ID 附加到 URL 以传递 ID?
更新
好的,我想我明白了....在删除按钮中,我需要回显该行的 ID,因此当查询从单击删除按钮运行时,它知道要正确删除哪个 ID?
已解决
好的。我想通了!
我有一个引用列表项 ID 的按钮:
echo "<a href='includes/deletelist.php?id=$row[id]'><input class=\"btn btn-danger\" value=Delete style=\"width: 85px;\"></a>
然后我将该 ID 传递给 deletelist.php
if (!isset($_GET['id'])) {
echo 'No ID was given...';
exit;
}
if ($db->connect_error) {
die('Connect Error (' . $con->connect_errno . ') ' . $con->connect_error);
}
$sql = "DELETE FROM lists WHERE id = ?";
if (!$result = $db->prepare($sql)) {
die('Query failed: (' . $db->errno . ') ' . $db->error);
}
项目被删除。
【问题讨论】:
-
请显示HTML代码
-
了解prepared statements以防止sql注入
-
你从不执行删除查询