你能给我建议吗?我搜索了问题,但没有找到与我相似的问题。
当我打算在 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\'。这是不正确的。
我想做的最后一件事是制作参数化语句,因为它会使系统更加复杂。当没有其他东西时,我会考虑这个选项。
简而言之 - 如何制作适用于整个查询并仅转义值的智能自动转义?