2011-03-30 4 views
0

나는 보통 내 다른 사이트에서 잘 작동하는 매우 간단한 MySQL의 쿼리를 가지고 있지만, 이번에는 내가 점점 오전 오류 다음MySQL의 구문 오류

Fatal error: 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 'where id = 1' at line 1 INSERT INTO members (plan, active) VALUES ('3 Days Plan','Y') where id = 1

코드는 다음과 같습니다

$db->query("INSERT INTO members (plan, active) VALUES ('$plan','$active') where id = $custom"); 

I을 mysql rainphp 클래스를 사용하고있다.

나는 간단한 해결책이 확신하지만 초보자 그냥 문이 안 열려도 그것을 :)

편집 :

안녕 모두, 귀하의 답변

감사합니다! 나는 WHERE 절이 UPDATE만을위한 것인지 알지 못해서 바보처럼 느껴진다. 그러나 그것은 감각이 없어!

도움을 다시 한번 감사드립니다! 당신이 INSERT하려는 경우

+3

'insert' 문에'where' 절을 사용할 수 없습니다 - 무엇을하려고합니까? – Blorgbeard

답변

4

삽입과 WHERE 동시에 사용할 수 없습니다. 그것은 UPDATE에서만 작동합니다.

3

는 사용 : WHERE 절은 여기에 쓸모가

$db->query("INSERT INTO members (plan, active) 
    VALUES ('".mysql_real_escape_string($plan)."', 
    '".mysql_real_escape_string($active)."')"); 

.

편집 : INSERT 또는 UPDATE을 원하십니까?

UPDATE 경우 :

$db->query("UPDATE members SET 
    plan = '".mysql_real_escape_string($plan)."', 
    active = '".mysql_real_escape_string($active)."' 
    WHERE id=".intval($id)); 
0

insert 문에 where 절을 제공 할 필요가 없습니다.

1

삽입 쿼리에 where 절을 사용하면 안됩니다.


where을 제거, 그래서 당신의 코드는 다음과 같습니다

$db->query("INSERT INTO members (plan, active) VALUES ('$plan','$active')"); 


하지 당신이이 where 절을 넣어 확실한 이유; 일부 데이터를 수정하려면update - insert이 아닌 데이터를 사용해야합니다. 예를 들어

:

(!) 참고로
update members 
set plan = '$plan', 
    active = '$active' 
where id = $custom 


: 당신은 당신의 데이터를 탈출 있는지 확인해야합니다 - 사용하는 경우 예를 들어, 클래스 (PDO::quote에서 제공하는 것 기능/방법을 사용하여, PDO).

+0

안녕하세요 파스칼, mysql에 전달하기 전에 모든 항목을 확인하기 위해 약간의 함수 (함수 값 ($ value) {htmlentities ($ value, ENT_QUOTES, 'utf-8'); return $ value;})를 사용하고 있습니다. 이거해야 해, 그렇지? – Andrej

+1

아니오 : htmlentities는 HTML 출력을 위해 데이터를 이스케이프 처리합니다. SQL 출력이 아님 ;; htmlentities가 수정 된 문자열을 반환한다는 것을 추가해야하며 여기서 반환 값을 사용하지 않습니다. 기본적으로 함수는 아무 것도하지 않습니다. –

+0

오케이. 정보 주셔서 감사합니다. 이를 변경하고 mysql_real_escape_string을 사용하여 모든 데이터를 이스케이프합니다. 나는 이것이 그것을 할 것이라는 점을 희망한다. – Andrej