如何在PHP中调试DELETE查询无法正常工作的原因?

时间:2014-05-07 14:02:19

标签: mysql

以下是我收到的错误:

  

注意:未定义的索引:第9行的C:\ EasyPHP-12.1 \ www \ final project \ book \ admin \ process_del_contact.php中的id   不能执行...

这是我的代码:

$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

3 个答案:

答案 0 :(得分:3)

对未来的一些建议:

  • 在数据库中写入时,从不使用GET参数(是DELETE也是写入)
  • 在将输入传递给数据库服务器(in_array,isset,array_key_exists)之前,请务必检查输入
  • 在使用之前,请始终验证输入并手动将其转换为正确的类型。
  • 在查询中使用参数时,始终使用预准备语句和参数绑定。
  • 不要使用mysql_ *函数,不推荐使用它们,而是使用mysqli_ *或PDO

您的查询问题在于如何构建它。你没有检查过' id'密钥存在与否存在于$ _GET数组中。

此外,请尝试弄清楚如果我将此作为' id' GET参数:1 OR 1=1

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

使其更简单,尝试为'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();
}

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