【发布时间】:2009-04-08 10:17:27
【问题描述】:
你能给我建议吗?我搜索了问题,但没有找到与我相似的问题。
当我的用户输入打算用于 SQL 查询时,如何使它们自动转义?我不喜欢在我的代码中填充类似的东西
$var_x = $DB->Escape($_POST['var_x']);
$another_var = $DB->Escape($_POST['another_var']);
$some_string = $DB->Escape($_POST['some_string']);
...
假设我有执行 mysql_real_escape_string 的 Escape 方法的数据库类
但我也不能在 SQL 查询上设置自动转义,因为它会破坏插入查询:
function Exec($sql){
$result = mysql_query($this->Escape($sql));
}
$q = $DB->Exec("SELECT * FROM table WHERE id = 'xxx'");
这使他们成为\'xxx\'。这是不正确的。
我想做的最后一件事是制作参数化语句,因为它会使系统更加复杂。当没有其他东西时,我会考虑这个选项。
简而言之 - 如何使智能自动转义适用于整个查询并仅转义值?
【问题讨论】:
标签: php mysql escaping mysql-real-escape-string