Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ZF1的quoteInto()方法的ZF2等价物是什么?_Php_Zend Framework2_Quote - Fatal编程技术网

Php ZF1的quoteInto()方法的ZF2等价物是什么?

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为我们报价

在Zend Framework 1中,数据库适配器有一个quoteinto方法,可用于引用sql语句

我想知道它在Zend Framework 2中的等价物?

它仍然存在(有点),请查看
zf2/library/Zend/Db/Adapter/Platform/your Db Adapter
我在中找到了大约6种不同的
quote()
方法。然而,我认为
quoteValue()
已经取代了默认的
quoteInto()
我们都习惯了

[编辑]
将提供一些指导,但我认为大多数时候,新类只会使用平台api为我们报价。
我自己仍在了解这一点,因此我对任何事情都不是很确定。

不幸的是,ZF 2.0中引入了新的
Zend\Db
,删除了
quoteInto()
方法。没有一种等价物具有完全相同的行为

在ZF2中有
quoteValue()
方法。此方法将一个值作为参数,然后引用该值,以便可以将其作为值安全地放入SQL查询中

但是,您可以使用
quoteValue()
复制ZF1
quoteInto()
方法的行为。您只需从中获取
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
仅采用一个参数。我应该如何使用它?