Php ZF1的quoteInto()方法的ZF2等价物是什么?
在Zend Framework 1中,数据库适配器有一个quoteinto方法,可用于引用sql语句 我想知道它在Zend Framework 2中的等价物?它仍然存在(有点),请查看Php ZF1的quoteInto()方法的ZF2等价物是什么?,php,zend-framework2,quote,Php,Zend Framework2,Quote,在Zend Framework 1中,数据库适配器有一个quoteinto方法,可用于引用sql语句 我想知道它在Zend Framework 2中的等价物?它仍然存在(有点),请查看zf2/library/Zend/Db/Adapter/Platform/your Db Adapter我在中找到了大约6种不同的quote()方法。然而,我认为quoteValue()已经取代了默认的quoteInto()我们都习惯了 [编辑] 将提供一些指导,但我认为大多数时候,新类只会使用平台api为我们报价
zf2/library/Zend/Db/Adapter/Platform/your Db Adapter
我在中找到了大约6种不同的quote()
方法。然而,我认为quoteValue()
已经取代了默认的quoteInto()
我们都习惯了
[编辑]将提供一些指导,但我认为大多数时候,新类只会使用平台api为我们报价。
我自己仍在了解这一点,因此我对任何事情都不是很确定。不幸的是,ZF 2.0中引入了新的
Zend\Db
,删除了quoteInto()
方法。没有一种等价物具有完全相同的行为
在ZF2中有quoteValue()
方法。此方法将一个值作为参数,然后引用该值,以便可以将其作为值安全地放入SQL查询中
但是,您可以使用quoteValue()
复制ZF1quoteInto()
方法的行为。您只需从中获取quoteInto()
方法的代码,然后从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处理这些东西的方式,type参数没有多大意义。还有一个$platform
参数,因为此方法对quoteValue()
方法的平台具有依赖性。引用SQL语句是一种古老且可能不安全的方法。您应该使用准备好的语句,这些语句对SQL注入有更好的保护。我将使用其中一个PDO驱动程序(取决于您的数据库),并遵循下面使用准备好的查询的一些示例。quoteInto
采用两个参数:字符串和替换的值,但quoteValue
仅采用一个参数。我应该如何使用它?