PHP-从MySQL中删除项目的按钮


PHP - Button to delete Item from MySQL

我正在编写一些视频上传脚本,现在我在管理面板上。我有一个所有视频的列表。每个视频的右侧都有一个删除按钮。当我点击按钮时,这个视频应该从数据库中删除,但在我点击按钮后它就不工作了,什么也没发生。

    <?php
    $query = mysql_query("SELECT * FROM `videos`");
    while($row = mysql_fetch_assoc($query))
    {
    $id = $row['id'];
    $name = $row['name'];
    echo "<a href='watch.php?id=$id'>$name</a><br /> 
    <input type='submit' name='remove' value='Delete'<br />";
 }
     if (isset($_POST['remove']))
 {
      foreach ($_POST['id'] as $the_id)
      {
           if (!mysql_query("DELETE FROM videos WHERE id = '$the_id'"))
           {
                echo mysql_error();
           }
      }
 }

 ?>

当然,在标题上我有mysql-connect查询。这只是列出所有视频并尝试删除的php代码。

以下是使用MySQLi执行此操作的示例,包括避免SQL注入的绑定参数-

if (isset($_POST['remove'])) {
   $remove = $mysqli->prepare("DELETE FROM `videos` WHERE `id` = ?");
   $vid_id = $_POST['vid_id'];
   $remove->bind_param('s', $vid_id);
   if(!$remove->execute() === true) {
       echo $mysqli->error;               
   }
}
$query = "SELECT * FROM `videos`";
if ($result = $mysqli->query($query)) {
   while($row = $result->fetch_object()){
       $id = $row->id;
       $name = $row->name;
       echo "<a href='watch.php?id=$id'>$name</a><br />"; 
       echo "<form name='delete_vid' method='post'>";
       echo "<input type='hidden' name='vid_id' value='$id'>";
       echo "<input type='submit' name='remove' value='Delete'<br />";
       echo "</form>";
    }
} else {
    echo mysqli_error($connection);
}
$result->close();

当然,您必须提供到数据库的$connection,但thsi不仅应该让您开始使用MySQLi,还应该为每个视频添加一个表单。

有关SQL注入的更多信息

也许问题出在html中,每个删除按钮都必须是独立的形式,并且有一个带id的隐藏输入。

echo "<a href='watch.php?id=$id'>$name</a><br /> 
    <form method='post'><input type='hidden' value='$id'><input type='submit' name='remove' value='Delete'<br /></form>";
<form method="post" >
<?php
    $query = mysql_query("SELECT * FROM `videos`");
    while($row = mysql_fetch_assoc($query))
    {
    $id = $row['id'];
    $name = $row['name'];
    echo "<a href='watch.php?id=$id'>$name</a><br /> 
    <button name='id' value='".$id."' type='submit' >Delete</button>
    <br />";
 }

           if (!mysql_query("DELETE FROM videos WHERE id = '".$_POST['id']."'"))
           {
                echo mysql_error();
           } else {
               echo 'successfully deleted';
           }

 ?>
 </form>