我正在尝试清理我的$ _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' ";
我没有收到数据库错误,但没有显示任何内容。
我没有消毒吗?这里发生了什么?请帮助!
答案 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并且它是安全的。一些链接: