Ein @CertaiN erwähnt, mit real vorbereitet, nicht emulierte, können Sie dieselbe Variable nicht mehrmals mit demselben Namen binden. Sie könnten sich dafür entscheiden, es mit einem anderen Namen zu binden, aber diese Abfrage benötigt es nicht. Die VALUES()
Funktion gibt den Wert zurück, der eingefügt worden wäre
, was diese Abfrage machen würde:
$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)';
Und kann bei Bedarf für weitere Spalten verwendet werden, etwa so:
$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)';