使用{$ _GET ['id']}清理不会显示mysql信息

时间:2013-10-30 12:31:00

标签: php mysql sanitization

我正在尝试清理我的$ _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' ";

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

我没有消毒吗?这里发生了什么?请帮助!

1 个答案:

答案 0 :(得分:0)

避免此类情况的最佳方法是使用准备好的查询: How can I prevent SQL injection in PHP?

这非常简单有效:

$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并且它是安全的。一些链接: