2013-01-04 1 views

答えて

6

残念ながら、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パラメータがあります。

-1

これはまだあります(ちょっと)、zf2/library/Zend/Db/Adapter/Platform /your DB adapterを確認しました。約6種類のquote()の方法が見つかりました。MySql variantです。私は、しかし、quoteValue()がデフォルトのquoteInto()を置き換えたと思います。

[EDIT]
Using the platform objectは、いくつかの方向性を提供しますが、私は新しいSQLクラスの時間のほとんどは、ちょうど私たちのために引用符を行うには、プラットフォームのAPIを使用すると思います。 私はまだ自分自身を知るようになっているので、私は本当に何かについては確信していません。

+0

'quoteInto'は、文字列と置き換えられた値の2つのパラメータをとりますが、' quoteValue'は1つのパラメータしかとりません。私はそれをどのように使うべきですか? –

3

SQL文を引用することは、それを行うための古い方法であり、潜在的に安全でない方法です。 SQLインジェクションに対する保護機能がはるかに優れたプリペアドステートメントを使用するべきです。私はPDOドライバlisted here(あなたのデータベースによって異なる)の1つを使用し、準備されたクエリを使用する以下のいくつかの例に従います。

関連する問題