如何调试为什么DELETE查询不工作,在PHP



这是我收到的错误:

注意:未定义的索引:id在C:EasyPHP-12.1wwwfinal projectbookadminprocess_del_contact.php第9行不能执行…

下面是我的代码:

$link=mysql_connect("localhost","root","")or die("Can't Connect...");
        mysql_select_db("shop",$link) or die("Can't Connect to Database...");

        $query="delete from contact where con_id =".$_GET['id'];
        mysql_query($query,$link) or die("can't Execute...");

        header("location:contact.php");

MySQL数据库:

con_id / con_nm / con_email /con_query

对未来的一些建议:

  • 当你在数据库中进行写操作时,永远不要使用GET参数(是的,DELETE也是写操作)
  • 在将输入传递给数据库服务器(in_array, isset, array_key_exists)之前总是检查输入
  • 在使用它们之前,始终验证您的输入并手动将它们转换为正确的类型。
  • 当你在查询中使用参数时,总是使用准备好的语句和参数绑定。
  • 不要使用mysql_*函数,它们已被弃用,使用mysqli_*或PDO代替

查询的问题在于如何构建它。您没有检查'id'键是否存在于$_GET数组中。

另外,请试着弄清楚如果我将此作为'id' GET参数发送会发生什么:1 OR 1=1

+ 1建议请勿在生产环境中使用root用户访问数据库!创建一个新用户并授予所需的(且仅是所需的)权限。

尝试在查询中添加单引号:

$query="delete from contact where con_id ='" . $_GET['id'] . "'";

为了更简单,尝试为'id'创建一个新变量:

$id = $_GET["id"];
$query = mysql_query ("delete from contact where con_id = '$id'");
if($query) {
    echo "deleting data success";
} else {
    echo "deleting data failed".mysql_error();
}

并确保您的代码与数据库连接。对不起,英语不好

最新更新