防止sql注入加上在zend中使用正则表达式

时间:2012-12-18 19:26:07

标签: regex zend-framework sql-injection zend-db

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

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

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

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

在使用^时将REGEXP置于开头意味着您想要从开始进行比较并在结束时使用$表示您想要从结尾进行比较。

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

1 个答案:

答案 0 :(得分:2)

尝试以下

$query = "SELECT country_name
              FROM $this->_name
          WHERE country_name REGEXP ? OR
                country_name REGEXP ?";
$this->_adapter->fetchAll($query, array('^'.$front, $end.'$'));