在Zend Framework 1中,有一個quoteinto數據庫適配器的方法,可用於引用sql語句。什麼是ZF1的quoteInto()方法的ZF2等價物?
我想知道它在Zend Framework 2中的等價物嗎?
在Zend Framework 1中,有一個quoteinto數據庫適配器的方法,可用於引用sql語句。什麼是ZF1的quoteInto()方法的ZF2等價物?
我想知道它在Zend Framework 2中的等價物嗎?
不幸的是,在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()
方法的平臺。
它仍然存在(有點),檢查出zf2/library/Zend/Db/Adapter/Platform /your DB adapter
我找到了約6種不同的quote()
方法在MySql variant可用。不過我認爲quoteValue()
已經取代了我們都習慣的默認quoteInto()
。
[編輯]
Using the platform object會提供一些方向,但我認爲,大部分的時間,新SQL類將只使用平臺API做報價我們。 我仍然自己瞭解這一點,所以我不確定任何事情。
引用SQL語句是舊的,可能不安全的方式。您應該使用對SQL注入有更好保護的預準備語句。我會使用其中一個PDO驅動程序listed here(取決於您的數據庫),並遵循使用準備好的查詢的下面的一些示例。
'quoteInto'有兩個參數:字符串和替換值,但是'quoteValue'只有1個參數。我應該如何使用它? –