【发布时间】:2017-11-13 06:17:20
【问题描述】:
我有一个生成查询的函数。像这样的:
// this is a simplified version of my real code
public function get_query(){
$name = $_GET['name'];
return "SELECT * FROM mytable WHERE name = $name";
}
如您所知,此类查询并不安全。因为他们受到 SQL 注入的威胁。无论如何,在将其用于查询之前,我需要 escape $name 变量。
嗯,有两种方法:(因为我使用 PDO。否则还有一种旧方法是使用 mysql_escape_string())
- 使用
PDO::prepare() - 使用
PDO::quote()
它们都需要 PDO 连接,它不能访问生成器查询功能。现在我想知道,还有其他方法吗?
【问题讨论】:
-
使用 pdo 你可以使用 param ..
-
@scaisEdge 我不想在查询中传递
?或:param之类的参数。我只想将查询作为字符串。 -
如果你有 PDO 使用它...
-
没有数据库连接就不可能安全地转义字符串。