sql >> Base de Datos >  >> RDS >> Mysql

Número de parámetro no válido, PDO en actualización duplicada falla

Una mención de @CertaiN, con real prepara, no emulados, no puede vincular la misma variable varias veces con el mismo nombre. Puede optar por vincularlo con otro nombre, pero esta consulta no lo necesita. Los VALUES() la función devuelve el valor que se habría insertado , lo que haría esta consulta:

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

Y se puede usar para más columnas si es necesario, así:

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