Php on zend,如何为查询转义变量?

DFe*_*oso 9 php mysql zend-framework sql-injection

我在Zend Framework中做了一些查询,我需要确保在下一种格式中不能进行SQL注入.我可以使用mysql_escape(已弃用)并且不会完成所有工作.如果我尝试使用real_mysql_escape它将无法获取数据库的连接,我无法找到zend_filter将如何解决问题.

我正在做的查询(simplied)有下一个sintaxes:

    $db = Zend_Registry::get('db'); 
    $select = "SELECT COUNT(*) AS num
                FROM message m
                WHERE m.message LIKE '".$username." %'";
    $row = $db->fetchRow($select);
Run Code Online (Sandbox Code Playgroud)

使用此框架阻止SQL INJECTION的最佳方法是什么?

kar*_*m79 17

简单:

$db->quote($username);
Run Code Online (Sandbox Code Playgroud)

所以:

   $username = $db->quote($username . '%');
   $select = 'SELECT COUNT(*) AS num
                                FROM message m
                                WHERE m.message LIKE ' . $username;
   $row = $db->fetchRow($select);
Run Code Online (Sandbox Code Playgroud)


Kon*_*kus 14

$sql = 'SELECT * FROM messages WHERE username LIKE ?';
$row = $db->fetchRow($sql, $username);
Run Code Online (Sandbox Code Playgroud)

参考:http://framework.zend.com/manual/en/zend.db.html