我想删除使用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";
}
答案 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";
}