2009-12-09 178 views
8

我有以下代码:Zend公司Db的避免SQL注入

public function checkLoginDetails($email, $password) { 
    $select = $this->select(); 
    $select->where ("password=?", md5($password)); 
    $select->where ("email=?", $email); 
    return $this->fetchRow($select); 

} 

电子邮件地址和密码直接从用户来的。我是否需要使用mysql_real_escape_string来过滤电子邮件,还是Zend DB会为我做些什么?

谢谢!

回答

15

我是Zend_Db的主要开发者,直到Zend Framework 1.0。

在您显示的示例中,将值插入到查询中,并应用适当的引号和转义。你不必再做任何事情。

在内部,它使用PHP扩展中内置的引用函数,用于您正在使用的Zend_Db_Adapter。例如。 PDO::quote()

+1

我使用mysqli适配器而不是PDO。它有什么区别? – iBiryukov 2009-12-10 00:18:07

+1

在这种情况下,它使用'mysqli :: real_escape_string()'。同样的效果。 – 2009-12-10 00:34:27