@CertaiN wspomina, z prawdziwym przygotowuje, nie emulowane, nie można wielokrotnie powiązać tej samej zmiennej pod tą samą nazwą. Możesz zdecydować się na powiązanie go z inną nazwą, ale to zapytanie tego nie potrzebuje. VALUES()
funkcja zwraca wartość, która zostałaby wstawiona
, co spowodowałoby to zapytanie:
$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)';
W razie potrzeby można go użyć do większej liczby kolumn, na przykład:
$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)';