2013-01-04 59 views

回答

6

不幸的是,在ZF 2.0引入新Zend\Db的除去quoteInto()方法。並沒有相同的行爲。

在ZF2中有quoteValue()方法。此方法將一個值作爲參數,然後引用該值,以便可以安全地將其作爲值放入SQL查詢中。

但是,您可以使用quoteValue()複製ZF1 quoteInto()方法的行爲。你可以簡單地把quoteInto()方法的代碼ZF1,並應用在ZF2平臺對象quoteValue()方法吧:

// modified quoteInto() function for ZF2 
function quoteInto($text, $value, $platform, $count = null) 
{ 
    if ($count === null) { 
     return str_replace('?', $platform->quoteValue($value), $text); 
    } else { 
     while ($count > 0) { 
      if (strpos($text, '?') !== false) { 
       $text = substr_replace($text, $platform->quoteValue($value), strpos($text, '?'), 1); 
      } 
      --$count; 
     } 
     return $text; 
    } 
} 

有一定的差異。 ZF1有一個$type參數,但由於ZF2與這些東西一起工作的方式,類型參數沒有多大意義。並且有一個$platform參數,因爲此方法依賴於quoteValue()方法的平臺。

-1

它仍然存在(有點),檢查出zf2/library/Zend/Db/Adapter/Platform /your DB adapter我找到了約6種不同的quote()方法在MySql variant可用。不過我認爲quoteValue()已經取代了我們都習慣的默認quoteInto()

[編輯]
Using the platform object會提供一些方向,但我認爲,大部分的時間,新SQL類將只使用平臺API做報價我們。 我仍然自己瞭解這一點,所以我不確定任何事情。

+0

'quoteInto'有兩個參數:字符串和替換值,但是'quoteValue'只有1個參數。我應該如何使用它? –

3

引用SQL語句是舊的,可​​能不安全的方式。您應該使用對SQL注入有更好保護的預準備語句。我會使用其中一個PDO驅動程序listed here(取決於您的數據庫),並遵循使用準備好的查詢的下面的一些示例。

相關問題