Zend Framework 1には、SQLステートメントを引用するために使用できるデータベースアダプタ用のquoteintoメソッドがあります。ZF1のquoteInto()メソッドと同等のZF2は何ですか?
私はZend Framework 2で同等のことを知っていますか?
Zend Framework 1には、SQLステートメントを引用するために使用できるデータベースアダプタ用のquoteintoメソッドがあります。ZF1のquoteInto()メソッドと同等のZF2は何ですか?
私はZend Framework 2で同等のことを知っていますか?
残念ながら、quoteInto()
の方法は、ZF2.0に新しいZend\Db
を導入して削除されました。まったく同じ振る舞いを持つ同等のものはありません。
ZF2には、quoteValue()
メソッドがあります。このメソッドは、1つの値をパラメータとして取り、その値を引用符で囲んで、安全に値としてSQLクエリに入れることができます。
ただし、quoteValue()
を使用して、ZF1 quoteInto()
メソッドの動作を複製することができます。いくつかの違いがあります
// 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から
quoteInto()
メソッドのコードを取り、それにZF2におけるプラットフォームオブジェクトから
quoteValue()
方法を適用することができます。 ZF1には
$type
というパラメータがありますが、ZF2がこれらのものと連動するため、typeパラメータはあまり意味がありません。この方法は
quoteValue()
メソッドのプラットフォームに依存するため、
$platform
パラメータがあります。
これはまだあります(ちょっと)、zf2/library/Zend/Db/Adapter/Platform /your DB adapter
を確認しました。約6種類のquote()
の方法が見つかりました。MySql variantです。私は、しかし、quoteValue()
がデフォルトのquoteInto()
を置き換えたと思います。
[EDIT]
Using the platform objectは、いくつかの方向性を提供しますが、私は新しいSQLクラスの時間のほとんどは、ちょうど私たちのために引用符を行うには、プラットフォームのAPIを使用すると思います。 私はまだ自分自身を知るようになっているので、私は本当に何かについては確信していません。
SQL文を引用することは、それを行うための古い方法であり、潜在的に安全でない方法です。 SQLインジェクションに対する保護機能がはるかに優れたプリペアドステートメントを使用するべきです。私はPDOドライバlisted here(あなたのデータベースによって異なる)の1つを使用し、準備されたクエリを使用する以下のいくつかの例に従います。
'quoteInto'は、文字列と置き換えられた値の2つのパラメータをとりますが、' quoteValue'は1つのパラメータしかとりません。私はそれをどのように使うべきですか? –