Je vois que vous avez résolu votre problème, mais pour répondre à votre question initiale :
REPLACE INTO
n'est pas avoir un WHERE
clause.
Le REPLACE INTO
la syntaxe fonctionne exactement comme INSERT INTO
sauf que toutes les anciennes lignes avec la même clé primaire ou unique sont automatiquement supprimées avant l'insertion de la nouvelle ligne.
Cela signifie qu'au lieu d'un WHERE
clause, vous devez ajouter la clé primaire aux valeurs remplacées pour limiter votre mise à jour.
REPLACE INTO myTable (
myPrimaryKey,
myColumn1,
myColumn2
) VALUES (
100,
'value1',
'value2'
);
... fournira le même résultat que...
UPDATE myTable
SET myColumn1 = 'value1', myColumn2 = 'value2'
WHERE myPrimaryKey = 100;
...ou plus exactement :
DELETE FROM myTable WHERE myPrimaryKey = 100;
INSERT INTO myTable(
myPrimaryKey,
myColumn1,
myColumn2
) VALUES (
100,
'value1',
'value2'
);