2012-08-15 5 views
-7

이것은 내가 값을 데이터베이스에 $id, $str$name 삽입하는 데 사용하는 코드입니다 :내 SQL 구문이 잘못 되었습니까?

$r=mysql_query("INSERT INTO varta(id,data,name) VALUES('$id','$str','$name');"); 

을하지만 위의 문에 대한 구문 오류가 발생합니다. 왜 그런가요? 내 구문이 잘못 되었습니까?

+8

어떤 오류가 발생합니까? –

+0

변수 값없이 알 수 없습니다. – Maerlyn

+2

* 한숨 * SQL 주입. –

답변

4

쿼리 단어 사이에 공백을 추가하는 시도하고 입력을 탈출 확인 :

$id = mysql_real_escape_string($id); 
$str = mysql_real_escape_string($str); 
$name = mysql_real_escape_string($name); 

$r=mysql_query("INSERT INTO varta (id,data,name) VALUES ('$id','$str','$name');"); 

또는 더 나은 아직이 - MySQLi 또는 PDO를 살펴보고 준비된 문을 사용합니다.

1

입력 변수가 올바르게 이스케이프 처리되어 있으면 코드의 액면가가 정상적으로 보입니다. 이 시도, 그래서 당신은 당신이 실행하고있는 문 볼 수 있습니다 : 당신의 변수에 아포스트로피를 포함하지 않는

$s = "INSERT INTO varta (id,data,name) VALUES('$id','$str','$name');"; 
echo $s; 
$r = mysql_query($s); 

확인, 예 : "데이지 O'Donnel"등을 (이것은 당신이했습니다 표시를 할 것 정확하게 그들을 탈출하지 않았다).

+0

좋아, 너는 그 남용을 열어 놓는 방법을 모두 적어 놓고, 내가 그에게 오류를 보는 방법을 가르치려고했다. ... – BugFinder

+0

BugFinder는 누락이 지적되면 회고 적으로 고칠 수있다! 나는 그것을 한 번 해냈고 +1은 질의를 분리하여 에코 될 수 있도록했다. – halfer

관련 문제