sql >> Database >  >> RDS >> Mysql

Ongeldig parameternummer, PDO bij dubbele update mislukt

Een @CertaiN vermeldt, met echte voorbereidt, niet-geëmuleerde, u kunt dezelfde variabele niet meerdere keren met dezelfde naam binden. Je zou kunnen kiezen om het te binden met een andere naam, maar deze zoekopdracht heeft het niet nodig. De VALUES() functie geeft de waarde terug die zou zijn ingevoegd , wat deze vraag zou opleveren:

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

En kan indien nodig voor meer kolommen worden gebruikt, zoals:

    $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. Moet je voorbereide verklaringen alleen gebruiken voor hun ontsnapping?

  2. Geavanceerde failover met behulp van post/pre-script hooks

  3. PHP Fatale fout:oproep naar ongedefinieerde functie mysqli_stmt_get_result()

  4. MAMP MySQL herkent my.cnf-waarden niet in OSX