2017-01-25 6 views
4

DBAL Query Builderでレコードを更新しようとしていますが、動作していないようです。私が設定しようとしているdataの列は、数字のtestの例の値を置き換えた場合にのみ機能します。DBAL Querybuilderが更新されない

その場合、私のレコードは完全に正常に更新されます。

私もsetParameterを使用しても、それは黙って失敗します。

私はこれを誤って使用しているのですか、それとも何か他のことがありますか?

編集:

insert文は完全に正常に動作します:

$queryBuilder = $this->connection 
       ->insert($this->table) 
       ->values([ 
        'id' => '?', 
        'secure' => '?', 
        'modified' => '?', 
        'lifetime' => '?', 
        'user_hash' => '?', 
        'data' => '?', 
       ]) 
       ->setParameter(0, $sessionId) 
       ->setParameter(1, 'y') 
       ->setParameter(2, time()) 
       ->setParameter(3, $this->minutes) 
       ->setParameter(4, 'test') 
       ->setParameter(5, $data); 
     } 
+0

が列ですおそらく数値に制限されていますか? – Jolta

+0

@Jolta no、まったくではなく、すべての種類の混合データを挿入することができます。 –

答えて

3

あなたはinsertでそれを使用するのと同じ方法updateでパラメータを使用することができます。

$queryBuilder = $this->connection 
      ->update($this->table) 
      ->set('data', '?') 
      ->where('id = ?') 
      ->setParameter(0, 'test') 
      ->setParameter(1, $sessionId); 
+0

あなたは 'set'と' where'を入れ替えました。私はそれを試して、それは今働く、これはかなり重要だと思います。また、対応する番号を正しく更新しても、 'setParameters'を絶対に入れ替えることはできません。あなたは今日私の守護天使だと思います。助けてくれてありがとう(再び笑)。 –

+0

私はそれがしてはならない理由はありません。 set( 'data'、 ':data') - > setParameter( 'data'、 'test') 'が動作していないと言っていますか? –

+0

位置指定パラメータと名前付きパラメータを混在させていませんか? –

関連する問題