Php Can';不要删除mysql中的行

Php Can';不要删除mysql中的行,php,mysql,delete-row,corresponding-records,Php,Mysql,Delete Row,Corresponding Records,我使用一个带有多个复选框的表单来选择几行并删除所有行,我使用的代码是: foreach ($_POST as $valor){ $del_user = $_POST["borrar_usuario"]; $q_borrar = "delete from usuarios where id_user in ('$del_user')"; mysqli_query($con, $q_borrar); echo "usuario borrado"; header

我使用一个带有多个复选框的表单来选择几行并删除所有行,我使用的代码是:

foreach ($_POST as $valor){
    $del_user = $_POST["borrar_usuario"];
    $q_borrar = "delete from usuarios where id_user in ('$del_user')";
    mysqli_query($con, $q_borrar);
    echo "usuario borrado";
    header('refresh: 3; url= exito.php');
}
但它没有删除任何内容。需要帮忙吗?

这些东西

foreach ($_POST["borrar_usuario"] as $valor){
    $del_user = $valor;
    $q_borrar = "delete from usuarios where id_user in ('$del_user')";
    mysqli_query($con, $q_borrar);
    echo "usuario borrado";
    header('refresh: 3; url= exito.php');
}

好的,因为
mysql\u query
接受两个参数的查询并将它们链接到错误放置的位置,所以应该是:

mysqli_query($q_borrar, $con);
此外,我还将删除foreach末尾的
header()
,因为它将触发,并且可能不会删除所有数据


这都是假设$deluser变量正常,我强烈建议在查询之前转义所有数据。

如果post['borrar\u usuario']是数组,则可能是,您可以将

// applied mysql_real_escape string
$del_user = array_map( function($var){return mysql_real_escape_string($var); } ,$_POST["borrar_usuario"]);  
$delUserList = implode("','",$del_user)."'";
$q_borrar = "delete from usuarios where id_user in ($delUserList)"; // please check SQL before executing
mysqli_query($con, $q_borrar);
echo "usuario borrado";
header('refresh: 3; url= exito.php');

您应该将
header()
放在
foreach()函数的外部

$deleteItems = $_POST['items'];
foreach ($deleteItems as $s)
{
    $str = $s;
    mysqli_query($con,"DELETE FROM table WHERE id='$str'")or die(mysqli_error($con));
}
header("location: manage_menu.php");
exit();

打印出
$q_borrar
。您将看到它可能是不正确的。此外,您还容易受到SQL注入攻击。$valoradd
mysqli_query($con,$q_borrar)或die(mysqli_error())有什么用