我认为我的代码阻止了SQL注入,但是在网上查看时,我意识到我错了。我通过使用:
来抓住ID$id = mysqli_real_escape_string($_GET['id']);
我在网上了解到,使用MySQL真正的转义字符串实际上并没有阻止我从SQL注入。但是,即使我尝试在我的服务器上使用它,它也会给我这个错误:
expects exactly 2 parameters, 1 given - Line: 4
我不确定为什么我能够在测试环境(wamp)中使用它,但不是在这里。我想知道,获取ID和阻止SQL注入的正确方法是什么?
答案 0 :(得分:0)
正确的方法是使用prepared statements。就您的代码而言,您使用的是mysqli_real_escape_string错误的方法。您还需要包含mysqli连接。
$id = mysqli_real_escape_string($mysqli, $_GET['id']);
使用准备好的陈述时,不需要这样做。
答案 1 :(得分:0)
我只想使用预准备语句并绑定值。就像这个例子一样。
$stmt = $mysqli->prepare("DELETE FROM tbl_users WHERE name = ?");
$stmt->bind_param("s", $name);
$stmt->execute();
$stmt->close();