7

Zend Framework 1 には、SQL 文を引用するために使用できるデータベース アダプタ用の quoteinto メソッドがあります。

Zend Framework 2 で同等のものを知りたいですか?

4

3 に答える 3

7

残念ながら、このquoteInto()メソッドはZend\DbZF2.0の新機能の導入により削除されました。そして、まったく同じ振る舞いをする同等のものはありません。

ZF2にはquoteValue()メソッドがあります。このメソッドは、1つの値をパラメーターとして受け取り、その値を引用符で囲んで、SQLクエリに値として安全に配置できるようにします。

quoteValue()ただし、 ZF1quoteInto()メソッドの動作を複製するために使用できます。ZF1quoteInto()からメソッドのコードを取得し、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()

于 2013-01-13T22:24:38.753 に答える
3

SQL ステートメントを引用することは、古くて潜在的に安全でない方法です。SQL インジェクションに対する保護がはるかに優れている準備済みステートメントを使用する必要があります。ここにリストされている PDO ドライバーの 1 つ(データベースによって異なります) を使用し、準備されたクエリを使用する以下の例のいくつかに従います。

于 2013-01-14T21:35:29.573 に答える