这是SQL查询的示例包装器
public function where ($col, $val)
{
if (!preg_match('~^[a-z0-9_]+$~i', $col))
throw new Exception('Invalid parameter $col');
$this->where.= "WEHERE $col = :$col";
}
由于正则表达式可能正在使用资源,这是否有点过分。 注意我实际上使用它来包装PDO(注意冒号:$ col)。
答案 0 :(得分:1)
如果可以通过用户输入指定$col
,那么这不是过度杀伤,而是对SQL注入的唯一防御。
如果$col
已知安全(例如,您的代码使用switch
语句生成其值),那么包含运行时检查可能不值得。但是,你应该考虑到“已知安全”状态随着程序未来的变化而变化的可能性。