我试图使用复选框从数据库中删除多行。
我在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']." />
答案 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
变量中的值进行消毒 - 非常危险。