PHP删除无法正常工作

时间:2014-07-16 19:23:59

标签: php mysql sql-delete

有人能帮助我吗?我的删除代码有效,但它删除了最新的被收藏文件,而不是选择的特定文件。这是代码:

while($row=$query->fetch())
{

$id=$row['id'];
$vid=$row['thread_id'];
$preview=$row['preview'];
$tt=$row['thread_title'];
$fav=$row['fav'];

$List.='<form action="" method="POST" id="postForm">
<div class="LISTT"><a href="VP2.php?id='.$vid.'">'.$preview.'</a><br/><label     id="pwords">'.$tt.'</label><br/>
<input type="submit" name="submit" value="Remove" id="DeleteButton"/>
</div></form>'; 

if(isset($_POST['submit']))
{
$query=$db->prepare("DELETE FROM favorite WHERE thread_id=:thread");
$query->execute(array(':thread'=>$vid));
}

}

2 个答案:

答案 0 :(得分:1)

您需要在表单中添加一个包含线程ID的隐藏表单字段,然后在表单处理程序中读取,如下所示:

while($row=$query->fetch())
{
$id=$row['id'];
$vid=$row['thread_id'];
$preview=$row['preview'];
$tt=$row['thread_title'];
$fav=$row['fav'];

$List.='<form action="" method="POST" id="postForm">
<div class="LISTT"><a href="VP2.php?id='.$vid.'">'.$preview.'</a><br/><label id="pwords">'.$tt.'</label><br/>
<input type="hidden" name="thread" value="' . $vid . '" />
<input type="submit" name="submit" value="Remove" id="DeleteButton"/>
</div></form>'; 

if(isset($_POST['submit']))
{
$id = $_POST["thread"];
$query=$db->prepare("DELETE FROM favorite WHERE thread_id=:thread");
$query->execute(array(':thread'=>$id));
}
}

答案 1 :(得分:1)

之所以这样,是因为你的while循环中有If语句。您提供的代码中的逻辑是在设置$ _POST [&#39; submit&#39;]时删除记录。因此它将遵循循环来删除记录而不是特定记录。

您需要将要删除的ID传递给用户,因为您使用表单执行此操作,请使用带有ID的隐藏字段。

if(isset($_POST['submit']))
{
    $query=$db->prepare("DELETE FROM favorite WHERE thread_id=:thread");
    $query->execute(array(':thread'=>$_POST['id']));
}

while($row=$query->fetch())
{

    $id=$row['id'];
    $vid=$row['thread_id'];
    $preview=$row['preview'];
    $tt=$row['thread_title'];
    $fav=$row['fav'];

    $List.='<form action="" method="POST" id="postForm">
<div class="LISTT"><a href="VP2.php?id='.$vid.'">'.$preview.'</a><br/><label     id="pwords">'.$tt.'</label><br/>
<input type="submit" name="submit" value="Remove" id="DeleteButton"/>
<input type="hidden" name="id" id="id" value="'.$id.'" />
</div></form>'; 

}