0

我想防止 sql 注入以及想REGEXP在同一个查询中获得类似的结果。我知道我防止像这样的 sql 注入

 $this->getAdapter()->fetchAlll("SELECT * FROM $this->_table WHERE email = ? ", array($email));

现在我有另一个查询,用于REGEXP根据前 3 个和后三个字符获得类似的结果。我的查询看起来像这样

$this->_adapter->fetchAll("SELECT country_name FROM $this->_name WHERE country_name REGEXP '^$front' OR country_name REGEXP '$end$'");

在使用时放入^开始REGEXP意味着您要从开始进行比较,$在结束时使用意味着您要从结束进行比较。

所以现在我想问我如何编写上述查询以防止上述查询中的sql注入?

4

1 回答 1

2

尝试以下

$query = "SELECT country_name
              FROM $this->_name
          WHERE country_name REGEXP ? OR
                country_name REGEXP ?";
$this->_adapter->fetchAll($query, array('^'.$front, $end.'$'));
于 2012-12-18T19:29:19.857 回答