2009-12-09 198 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