Mysql
 sql >> Database >  >> RDS >> Mysql

Numero di parametro non valido, PDO su aggiornamento duplicato non riuscito

Un @CertaiN cita, con reale prepara, quelli non emulati, non è possibile associare la stessa variabile più volte con lo stesso nome. Potresti optare per legarlo con un altro nome, ma questa query non ne ha bisogno. Il VALUES() la funzione restituisce il valore che sarebbe stato inserito , che renderebbe questa query:

    $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)';

E può essere utilizzato per più colonne, se necessario, in questo modo:

    $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)';