-2

我正在尝试清理我的 $_GET 输入,但由于某种原因,mysql 不会从数据库中检索数据。如果我这样做:

$user = mysqli_real_escape_string($connection, $_GET['id']);

//execute query to call user info
$query = "SELECT user
FROM company
WHERE user={$_GET['id']} ";

这将起作用并显示结果;但是,如果我这样做:

$user = mysqli_real_escape_string($connection, $_GET['id']);

//execute query to call user info
$query = "SELECT user
FROM company
WHERE user= '$user' ";

我没有收到数据库错误,但没有任何显示。

我消毒的不对吗?这里发生了什么?请帮忙!

4

1 回答 1

0

避免这种情况的最佳方法是使用准备好的查询: 如何防止 PHP 中的 SQL 注入?

它非常简单有效:

$q = $db->prepare('SELECT user FROM company WHERE user=?');
$q->bind_param('i', $user);

$q->execute();

$result = $q->get_result();
while ($row = $result->fetch_assoc()) {
    // do something with $row
}

这很酷,因为它是 OOP 并且很安全。一些链接:

于 2013-10-30T17:09:44.800 回答