2017-01-25 6 views
4

Ich versuche, einen Datensatz mit dem DBAL Query Builder zu aktualisieren, und es scheint nicht zu funktionieren. Die data Spalte, die ich einstellen möchte, funktioniert nur, wenn ich den test Beispielwert hier durch eine Zahl ersetze.DBAL Querybuilder nicht aktualisieren

In diesem Fall wird es meine Aufzeichnung völlig in Ordnung zu aktualisieren.

Auch wenn ich setParameter dafür auch verwende, wird es stillschweigend fehlschlagen.

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

Ich benutze dies falsch oder ist etwas anderes los?

Edit:

Die Insert-Anweisung funktioniert völlig in Ordnung:

$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

Ist die Spalte vielleicht auf numerische Werte beschränkt? – Jolta

+0

@Jolta nein, überhaupt nicht und meine Insert-Anweisung funktioniert gut, die alle Arten von gemischten Daten einfügen kann. –

Antwort

3

Sie Parameter in update die gleiche Art und Weise verwenden, können Sie es in insert verwenden:

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

Sie haben das 'Set' und' Where' getauscht. Ich habe es versucht und es funktioniert jetzt, denke, das ist ziemlich wichtig. Sie können die 'setParameters' auch dann nicht vertauschen, wenn Sie ihre entsprechende Nummer korrekt aktualisieren. Schätze, du bist heute mein Schutzengel. Danke für die Hilfe (wieder lol). –

+0

Ich sehe keinen Grund, warum es nicht sollte. Sagen Sie '-> set ('data', ': data') -> setParameter ('data', 'test')' funktioniert nicht? –

+0

Sie mischen nicht die positionellen und benannten Parameter, oder? –