6

特殊文字を含む可能性のある文字列を使用して、移行内でいくつかの簡単な更新を行いました。例えば:

$this->execute("UPDATE `setting` SET `classname` = 'org\foo\Bar' WHERE `id` = 1 ");

これに関する問題は、たとえば、org\foo\BarMySQL に挿入されたときに\エスケープ文字として扱われます。各 DBphinxサポートについて、文字列で処理する必要がある特殊文字があると確信していPDOます。直接使用する場合は、準備されたステートメントとバインディング パラメーターを使用して回避できます。

文字列をエスケープするためのネイティブな方法はありphinxますか、またはのようなものにフォールバックする必要がありPDO::quote()ますか?

4

1 に答える 1

11

シャーロットの OP コメントでほのめかされているように、この機能が存在するようには見えません。回避策は次のとおりです。

  1. PDO 接続を取得します
  2. を使用するquote()か、接続を直接使用して手動でクエリを作成します

これが私のコード例ですquote()

public function change()
{
    $conn = $this->getAdapter()->getConnection();
    $quotedString = $conn->quote('org\foo\Bar');
    $this->execute("UPDATE `setting` SET `classname` = $quotedString WHERE `id` = 1 ");
 }
于 2016-04-18T15:42:31.847 に答える