删除Checkbox选择的记录

时间:2011-04-22 10:01:47

标签: php

  

可能重复:
  Delete values selected using checkbox

我想删除使用Checkbox

选择的记录

复选框代码

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

开启删除按钮

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";
}

3 个答案:

答案 0 :(得分:1)

决定添加我自己的答案,这基本上是基于@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_escape_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一起使用)。

答案 1 :(得分:-1)

尝试: -

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";  
}

}

答案 2 :(得分:-1)

试试这段代码,

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";

}