提问人:tasiaraye 提问时间:8/7/2019 最后编辑:Funk Forty Ninertasiaraye 更新时间:8/7/2019 访问量:744
如何修复未定义的索引?[复制]
How can I fix an undefined index? [duplicate]
问:
这个问题在这里已经有答案了:
使用 PHP 的“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量” (29 个答案)
参考 - 这个错误在PHP中是什么意思? (38 个答案)
4年前关闭。
我已连接到本地主机,并尝试使用在线 $ 上的 GET 方法。我收到通知:未定义索引:删除 C:\xampp\htdocs\webd153\delete.php 中的第 4 行。
<?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 数据库的表单删除我在数据库中输入的名称。
答:
1赞
Jakub Bouček
8/7/2019
#1
正确的方法是:
<?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);
评论
1赞
Jared Farrish
8/7/2019
这演示了查询中可能存在的 SQL 注入。
0赞
Jared Farrish
8/7/2019
php.net/manual/en/mysqli.quickstart.prepared-statements.php
0赞
Jakub Bouček
8/7/2019
@JaredFarrish 你说得对,谢谢。编辑。
0赞
Jared Farrish
8/7/2019
将其显示为准备好的声明;它已经证明了这一点。如果它是 UUID 或其他东西怎么办?只要准备好它。
1赞
Funk Forty Niner
8/7/2019
@JaredFarrish 一开始就不是我的反对票。至于为什么我们在 2019 年仍在讨论 SQL/PHP;我们看到许多不同的人问了很多问题,我们不把它们当作“一个”,而是作为一个整体,并被一些人这样对待。这种情况日复一日地发生,无法控制其他人的行为。我们所能做的就是尽力提供帮助,并希望继续给人们一些友好的建议。堆栈对于我们的英国人来说太大了,所以每天的磨练每天都在变大。我们现在必须停止讨论这个问题。它可能会触发某些东西。
评论
isset()