删除复选框所选的记录


Deleting records selected by Checkbox

可能重复:
删除使用复选框选择的值

我想删除已使用复选框选择的记录

复选框代码

<input name="checkbox[]" type="checkbox" value="<?=$row[s_id]?>" id="checkbox[]">

ON删除按钮

if($_POST['delete'])
{
$cnt=array();
//$cnt=array_count_values($_POST[checkbox]);
$cnt=count($_POST['checkbox']);
for($i=0; $i < $cnt; $i++)
{
        $del_id=$checkbox[$i];
        //$sql = "DELETE FROM t_s_list WHERE `s_id`='".mysql_real_escape_string($del_id)."'";
        $sql = "DELETE * FROM t_s_list WHERE `s_id`= '$del_id'";
        $result = mysql_query($sql);
        mysql_error();
        $NEW="Selected records Deleted";
}
$NEW="Selected records not Deleted";
}

决定添加我自己的答案,这个答案基本上是基于@Sanjay Mohnani的答案。

if($_POST['delete']) {
    //store the array of checkbox values
    $allCheckBoxId = $_POST['checkbox'];
    //escaping all of them for a MySQL query using array_map
    array_map ('mysql_real_escape_string', $allCheckBoxId);
    //implode will concatenate array values into a string divided by commas
    $ids = implode(",", $allCheckBoxId);
    //building query
    $sql = "DELETE FROM t_s_list WHERE `s_id` IN ($ids)";
    //running query
    mysql_query($sql);
    $NEW="Selected records Deleted";
}

请记住,无论何时在MySQL查询中使用来自外部世界的任何值($_POST、$_GET、$_COOKIE等(,都要事先对其进行转义。恶意用户很容易操纵这些值。这种类型的攻击称为SQL注入。可以使用mysql_real_eescape_string((转义值。

如果要转义数组中的所有值,可以使用array_map((,它将函数应用于数组的所有元素。

当你输出来自外部世界的东西时,你也应该小心。例如,您永远不应该执行echo $_GET['something'];,正确地对其进行转义以获得输出(类似于echo htmlspecialchars($_GET['something'])(。

永远不要相信任何来自外部的东西

还有一件事:在HTML文档中,ID只能用于一个元素。在您的代码中,所有复选框都将具有ID checkbox[],这不是一个好的做法。

请做一些类似的事情:

<input name="checkbox[]" type="checkbox" value="<?=$row[s_id]?>" id="checkbox_<?=$row[s_id]?>">

这确保您的元素具有不同的ID或根本不使用ID。当您发布表单时,只会发布NAME,ID仅用于客户端(例如,可以与CSS或Javascript一起使用(。

尝试:-

if($_POST['delete'])  
{  
if(count($_POST['checkbox']) > 0) {  
   foreach($_POST['checkbox'] as $checkbox)  
   {  
        $del_id=$checkbox;  
        $sql = "DELETE * FROM t_s_list WHERE `s_id`= '$del_id'";  
        $result = mysql_query($sql);  
        mysql_error();  
   }  
   echo "Selected Rows deleted";  
} else {  
     $NEW="Nothing to Delete";  
}
}

试试这个代码,

if($_POST['delete'])
{
    $allCheckBoxId = $_POST['checkbox'];
    $ids = implode(",", $allCheckBoxId);
    $sql = "DELETE from t_s_list WHERE `s_id` IN (".$ids.")";
    mysql_query($sql) or die(mysql_error());
    $NEW="Selected records Deleted";
}