Deleting database rows in php & mysql


Deleting database rows in php & mysql

我需要一些关于如何动态地针对我希望删除的行,因为目前我必须手动更改我的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();