在 Zend Framework 1 中有一个用于数据库适配器的 quoteinto 方法,可用于引用 sql 语句。
我想知道它在 Zend Framework 2 中的等价物吗?
在 Zend Framework 1 中有一个用于数据库适配器的 quoteinto 方法,可用于引用 sql 语句。
我想知道它在 Zend Framework 2 中的等价物吗?
不幸的是,随着ZF 2.0quoteInto()
中新方法的引入,该方法被删除。Zend\Db
并且没有具有完全相同行为的等价物。
ZF2中有quoteValue()
方法。此方法将一个值作为参数,然后将该值引用,以便您可以安全地将其作为值放入 SQL 查询中。
但是,您可以使用quoteValue()
来复制 ZF1quoteInto()
方法的行为。您可以简单地quoteInto()
从ZF1获取方法的代码,并将quoteValue()
ZF2 中平台对象的方法应用到它:
// 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()
。
引用 SQL 语句是旧的且可能不安全的方法。您应该使用对 SQL 注入有更好保护的准备好的语句。我将使用此处列出的 PDO 驱动程序之一(取决于您的数据库),并按照下面的一些示例使用准备好的查询。