MySQL NA DUPLIKOWANEJ AKTUALIZACJI Z GDZIE?

Mam pewne problemy z poniższym zapytaniem. Chcę, aby uruchomiło zapytanie UPDATE, jeśli w bazie danych jest już wiersz dla użytkownika. Spodziewam się, że wstawi wiersz z wartościami lub zaktualizuje wiersz wartościami, tak jak to zostało podane w zapytaniu.

Otrzymuję następujący błąd:

błąd składni lub naruszenie dostępu: 1064 Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL pod kątem poprawnej składni w pobliżu 'SET balance = '40', xplevel = '36 'WHERE username =' nibblenews 'AND server =' Factions '' w linii 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();

questionAnswers(1)

yourAnswerToTheQuestion