2012-05-31 3 views
2

13 개의 필드가있는 데이터베이스 테이블이 있는데 그 중 9 개는 양식의 사용자 입력으로 채워집니다. 새 행을 삽입해도 제대로 작동하지만 기존 행을 업데이트하는 데 문제가 있습니다. 나는 친구에게 그의 의견을 물었고, 그는 도울 수 없었다.MySQL 업데이트 쿼리의 구문 오류

사용자 조정 가능한 모든 필드는 각 필드마다 하나씩 조정할 수 있으므로 업데이트해야합니다. 따라서 여러 SET 문과 함께 쿼리해야합니다. MySQL의 오류 메시지에 따르면

UPDATE tour SET StopNum=0, SET ForwardLink=0, SET BackLink=0, SET LeftLink=0, SET RightLink=0, SET Name= 'Start', SET Lat=98.154000, SET Lon=-75.214000, SET Heading=100 WHERE FileName='../panos/photos/1-prefix_blended_fused.jpg' 

, 내가 올바른 구문은 설명서를 확인해야합니다 업데이트 쿼리는 내가 예를 들어 업데이트에서 다음과 같은 출력을 얻을 수 위의 쿼리를 사용

$query = sprintf("UPDATE tour 
    SET StopNum=%d, SET ForwardLink=%d, SET BackLink=%d, SET LeftLink=%d, 
    SET RightLink=%d, SET Name= '%s', SET Lat=%f, SET Lon=%f, SET Heading=%d 
    WHERE FileName='%s'", $_POST['curStop'], $_POST['nextStop'], $_POST['prevStop'], 
    $_POST['leftStop'], $_POST['rightStop'], $location, $latitude, $longitude, 
    $heading, $image); 

입니다 null 허용 VARCHAR (250) 컨테이너로 정의된다

'SET ForwardLink=0, SET BackLink=0, SET LeftLink=0, SET RightLink=0, SET Name= 'S' at line 1 

필드 '이름'근처에서 사용하는, 그래서 5 문자 저장을위한 충분한 공간보다 더 많은입니다.

+0

합니다. 대개는 오류가 따옴표로 묶인 부분 바로 앞에있는 텍스트에 오류가 있음을 의미합니다. 이 경우 첫 번째 변수 대신에 각 변수 앞에 SET이 사용됩니다. – octern

답변

3

구문은 다음과 같아야합니다 완전히 일반적인 SQL 오류의

UPDATE table SET column=1,column1=2,column2=3 WHERE filename='asdf' 
+0

그게 문제였습니다. 나는 나쁜 모범을 보았고 그것을 적응시킬 필요가있었습니다. – Jason