如何使用复选框从数据库中删除多行?

时间:2014-04-13 15:08:11

标签: php html mysql checkbox

我试图使用复选框从数据库中删除多行。

我在foreach循环中有一个html表来查找表值。

我想在此表中放置一个删除按钮,以删除某一行中的所有值。

但我不知道该怎么做,我使用这段代码:

if (isset($_POST['delete']) && (!empty($_POST['checkbox']))){
$del_id = $_POST['checkbox']; 

foreach($del_id as $value){
   $sql = "DELETE FROM my_table WHERE id='".$value."'";
   $result = mysql_query($sql);
}
}

我在foreach循环中有这个代码

<td><input style='width: 50px;' class='delete' value='delete' name='checkbox' type='checkbox'/></td>

<input type='hidden' name='id' value=".$key['job_id']." />

2 个答案:

答案 0 :(得分:2)

您需要从

更改此代码
<td><input style='width: 50px;' class='delete' value='delete' name='checkbox' type='checkbox'/></td>

类似

<td><input style='width: 50px;' class='delete' value='delete' name='checkbox[]' type='checkbox'/></td>

查看name='checkbox'name='checkbox[]'之间的差异然后在您的php代码中..写下这样的内容

print_r($_POST);

你将得到所有的价值..试试这个。

答案 1 :(得分:0)

您应该将复选框视为数组:

<input style='width: 50px;' class='delete' value='delete' name='checkbox[]' type='checkbox'/>

此外,您可以使用checkbox命令,而不是为收到的每个IN()值创建新的MySQL语句:

if (isset($_POST['delete']) && (!empty($_POST['checkbox']))){
$del_ids = implode(',', $_POST['checkbox']); 

$sql = "DELETE FROM my_table WHERE id IN('".$del_ids."')";
}

但是,我强烈建议使用准备好的陈述。你似乎也没有对$_POST变量中的值进行消毒 - 非常危险。