防止SQL注入和获取ID

时间:2015-02-03 06:20:41

标签: php sql

我认为我的代码阻止了SQL注入,但是在网上查看时,我意识到我错了。我通过使用:

来抓住ID
$id = mysqli_real_escape_string($_GET['id']);

我在网上了解到,使用MySQL真正的转义字符串实际上并没有阻止我从SQL注入。但是,即使我尝试在我的服务器上使用它,它也会给我这个错误:

expects exactly 2 parameters, 1 given - Line: 4

我不确定为什么我能够在测试环境(wamp)中使用它,但不是在这里。我想知道,获取ID和阻止SQL注入的正确方法是什么?

2 个答案:

答案 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();