我需要一些关于如何动态地针对我希望删除的行,因为目前我必须手动更改我的php脚本来删除行,但我有点卡住在哪里去下一步的建议。
所以这是我的项目索引:
<?php
$result = mysqli_query($con,"SELECT * FROM items");
while($row = mysqli_fetch_array($result)) {
echo $row['added'] . $row['content'] . $row['id'];
echo "<br>";
echo "Mark as complete";
echo "<br>";
echo "<a href='delete.php'>Delete Item</a>";
echo "<br>";
echo "<a href='update.php'>Edit Item</a>";
echo "<br>";
echo "<br>";
}
mysqli_close($con);
?>
如果我点击delete item它只会删除我在php中指定的条目
mysqli_query($con,"DELETE FROM items WHERE id='14'");
mysqli_close($con);
现在我需要知道如何告诉按钮删除项目,链接是相关联的,你可以我已经手动输入14,这样就会删除那个。但我需要一些指导或建议如何删除行或项目id的行在数据库中。
我最初的想法是我将需要传递一些信息关于这一行也许使用$_GET?
需要在delete.php
的URL中传递待删除项的ID。首先将ID添加到url:
echo '<a href="delete.php?id='. $row['id'] .'">Delete Item</a>';
然后,在delete.php
中,您需要使用$_GET
从URL中获取参数,并将其插入删除查询:
$id =$_GET['id'];
$result = mysqli_query("DELETE FROM items WHERE id='$id'");
然而,你需要意识到任何人都可以过来,输入一个格式为"delete.php?"Id =',它将删除该项。你应该:
- 建立确认方法
- 考虑使用预处理语句来防止SQL注入攻击。
项目索引页:
echo "<a href='delete.php?id=" . $row['id'] . "'>Delete Item</a>";
删除文件:
$id = $con->real_escape_string($_GET['id']); // preventing sql injections
$con->query("DELETE FROM items WHERE id='$id'");
安全解决方案:
$id = $con->real_escape_string($_GET['id']);
$sth = $con->prepare("DELETE FROM items WHERE id=?");
$sth->bindParam(1, $id);
$sth->execute();