这是我收到的错误:
注意:未定义的索引: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();
}
并确保您的代码与数据库连接。对不起,英语不好