【发布时间】:2010-03-29 19:17:37
【问题描述】:
我正在构建一个数据库类,并认为结合某种形式的 SQL 注入预防是一个好主意(呵呵!)。这是运行数据库查询的方法:
class DB
{
var $db_host = 'localhost';
var $db_user = 'root';
var $db_passwd = '';
var $db_name = 'whatever';
function query($sql)
{
$this->result = mysql_query($sql, $this->link);
if(!$this->result)
{
$this->error(mysql_error());
} else {
return $this->result;
}
}
}
课堂上还有更多内容,但我只是为了这个而减少了它。我面临的问题是,如果我只使用mysql_real_escape_string($sql, $this->link);,那么它会转义整个查询并导致 SQL 语法错误。如何动态找到需要转义的变量?我想避免在我的主要代码块中使用mysql_real_escape_string(),我宁愿在函数中使用它。
谢谢。
【问题讨论】:
-
我知道我在您之前的帖子中说过,但让我重复一遍:使用 PDO。如果你使用 PDO 和它的预处理语句,你甚至不必担心转义它们。
-
使用参数化查询,使用 adodb 或 pdo。
标签: php sql mysql database security