sql >> Databasteknik >  >> RDS >> Mysql

Ogiltigt parameternummer, PDO vid dubblettuppdatering misslyckas

En @CertaN nämner, med riktig förbereder, icke-emulerade sådana, kan du inte binda samma variabel flera gånger med samma namn. Du kan välja att binda den med ett annat namn, men den här frågan behöver det inte. VALUES() funktion returnerar värdet som skulle ha infogats , vilket skulle göra denna fråga:

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

Och kan användas för fler kolumner om det behövs, som så:

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


  1. Ta med ditt eget moln tillgängligt för DigitalOcean

  2. Kan du inte ladda tidszoner?

  3. MySQL-bulkinfogning från CSV-datafiler

  4. Skäl att vara optimistisk om framtiden för Microsoft Access