MySQL на дубликате обновления с помощью WHERE?

У меня возникли некоторые проблемы с запросом ниже. Я хочу, чтобы он выполнял запрос UPDATE, если в базе данных уже есть строка для пользователя. Я ожидаю, что он вставит строку со значениями или обновит строку со значениями, как указано в запросе.

Я получаю следующую ошибку:

синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с 'SET balance = '40', xplevel = '36 'WHERE username =' nibblenews 'И server =' Factions '' в строке 1 '

$stmt = $db->prepare('INSERT INTO stats (balance, xplevel, username, server) VALUES (:balance, :xp, :username, :server) ON DUPLICATE KEY UPDATE stats SET balance=:balance2, xplevel=:xp2 WHERE username=:username2 AND server=:server2');
$stmt->bindParam(':balance', $balance, PDO::PARAM_STR);
$stmt->bindParam(':balance2', $balance, PDO::PARAM_STR);
$stmt->bindParam(':xp', $xp, PDO::PARAM_STR);
$stmt->bindParam(':xp2', $xp, PDO::PARAM_STR);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':username2', $username, PDO::PARAM_STR);
$stmt->bindParam(':server', $server, PDO::PARAM_STR);
$stmt->bindParam(':server2', $server, PDO::PARAM_STR);
$stmt->execute();

Ответы на вопрос(1)

Ваш ответ на вопрос