首页 > 解决方案 > 如何修复未定义的索引?

问题描述

我已连接到本地主机,并尝试在 $ 行上使用 GET 方法。我在第 4 行收到通知:未定义索引:C:\xampp\htdocs\webd153\delete.php 中的 deleteid。

<?php
include 'connection.php';

$deleteid = $_GET['deleteid'];

if (isset($deleteid)) {
$deletesql = $dbh->prepare("DELETE FROM users WHERE id = '$deleteid'");
 $deletesql->execure();
  echo "record has been deleted!<br>";

我正在尝试使用从本地主机连接到 myphpadmin 数据库的表单删除我在数据库中输入的名称。

标签: phpmysqligetundefined-index

解决方案


正确的方法是:

<?php
include 'connection.php';

if(isset($_GET['deleteid']) {
 $deleteid = $_GET['deleteid'];

 $deletesql = $dbh->prepare("DELETE FROM users WHERE id = '$deleteid'");
 $deletesql->execute();
 echo "record has been deleted!<br>";
}

但这是非常不安全的!当我发送带有 URL 结尾的请求时?deleteid=1'+OR+1=1+OR+id=',您的数据库将被删除所有行。我建议将查询构建更改为:

 $deletesql = $dbh->prepare("DELETE FROM users WHERE id = (?)");
 $deletesql->bind_param('i', $deleteid);

推荐阅读