2017-05-08 1 views
-2

나는 쉽게 찾을 수 있어야하는 것처럼 보이는이 오류를 얻고 있습니다. 그러나 코드를 얼마나 많이 보든 Google에서 찾든 상관 없습니다. 여기SQL 구문에 오류가 있습니다. 'SET`points` =`points` +?'근처에 있습니다.

코드

INSERT INTO `users` (`username`) 
    VALUES (?) 
     ON DUPLICATE KEY 
      UPDATE `users` SET `points` = `points` + ? 

는 IS? 이후 제조 된 문장을 사용하여 값을 부여하지만 테스트 I 아래

INSERT INTO `users` (`username`) 
    VALUES (`existingusername`) 
     ON DUPLICATE KEY 
      UPDATE `users` SET `points` = `points` + 5 

같이 실제 값들을 대체 I는 값으로 nonextistingusername 시도. 나는 또한 "points 주위에 괄호를 시도 : 나는 ON DUPLICATE KEY UPDATE

을 사용하고 있기 때문에 나는 내가 잘못 여기

편집을거야 어디 표시되지 않습니다 UPDATE에 대한 WHERE을 사용하여 시도하지만, 필요하지 않은 생각 + 5 "

편집 : 더 코드

foreach ($users as $user) 
{ 
    $points_query = mysqli_prepare($db, 'INSERT INTO `users` (`username`) 
     VALUES (?) 
      ON DUPLICATE KEY 
       UPDATE `users` SET (`points` = `points` + ?)'); 

    mysqli_stmt_bind_param($points_query, 'si', $user, $user_points); 
    mysqli_stmt_execute($points_query); 

    echo mysqli_error($db) . "\n"; 
} 

그리고 SQL 오류

You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL 
server version for the right syntax to 
use near 'SET (`points` = `points` + ?)' at line 4 
+0

당신은 PHP 코드와 질문에 대한 오류 메시지를 추가 할 수 있습니까? – chris85

+0

@ chris85 업데이트했습니다. 덕분에 – cantsay

답변

1

올바른 구문은 테이블 이름이나 키워드 SET을 다시 사용하지 않습니다.

ON DUPLICATE KEY 
    UPDATE `points` = `points` + ? 

https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

+0

감사합니다. 'ON DUPLICATE KEY '를 사용하는 것과 관련된 느낌을 받았으며 쿼리의 변경 사항을 간과 한 상태 여야합니다. – cantsay

관련 문제