Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ungültige Parameternummer, PDO bei doppelter Aktualisierung schlägt fehl

Ein @CertaiN erwähnt, mit real vorbereitet, nicht emulierte, können Sie dieselbe Variable nicht mehrmals mit demselben Namen binden. Sie könnten sich dafür entscheiden, es mit einem anderen Namen zu binden, aber diese Abfrage benötigt es nicht. Die VALUES() Funktion gibt den Wert zurück, der eingefügt worden wäre , was diese Abfrage machen würde:

    $sql = 'INSERT INTO users_meta
         (user_id,meta_key,meta_value)
       VALUES (:user_id,:meta_key,:meta_value)
       ON DUPLICATE KEY
       UPDATE meta_value = VALUES(meta_value)';

Und kann bei Bedarf für weitere Spalten verwendet werden, etwa so:

    $sql = 'INSERT INTO users_meta
         (user_id,meta_key,meta_value)
       VALUES (:user_id,:meta_key,:meta_value)
       ON DUPLICATE KEY
       UPDATE 
         meta_value = VALUES(meta_value),
         meta_key = VALUES(meta_key)';