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