【问题标题】:Can't delete rows in mysql无法删除mysql中的行
【发布时间】:2013-07-08 04:05:22
【问题描述】:

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

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');
}

但它不会删除任何内容。请帮忙?

【问题讨论】:

  • 打印出$q_borrar。你会看到它可能是不正确的 MySQL。此外,您对 SQL 注入攻击持开放态度。
  • $valor有什么用
  • 添加mysqli_query($con, $q_borrar) or die(mysqli_error());

标签: php mysql delete-row corresponding-records


【解决方案1】:

这些东西?

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');
}

【讨论】:

    【解决方案2】:

    好的,因为mysql_query接受两个参数查询和链接你放错了,应该是:

    mysqli_query($q_borrar, $con);
    

    我还会在 foreach 结束时删除 header(),因为它会触发并且有可能不会删除所有数据。

    这一切都假设您的 $deluser 变量没问题,我会强烈建议您在查询之前转义所有数据。

    【讨论】:

      【解决方案3】:

      如果 post['borrar_usuario'] 是数组,那么您可以将 by 引号中的值内爆

      // 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');
      

      【讨论】:

        【解决方案4】:

        您应该将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();
        

        【讨论】:

          猜你喜欢
          • 2011-01-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-20
          • 1970-01-01
          • 1970-01-01
          • 2018-05-15
          • 2013-03-06
          相关资源
          最近更新 更多