2011-09-10 6 views
0

이 내 코드입니다 : 이것은 내 DBPHP를 사용하여 MySQL 데이터베이스에 삽입 할 수없는 이유는 무엇입니까?

Field - Type 
id  int(11) (auto increment) 
name  varchar(30) 
mail  varchar(30) 
group varchar(4) 
year  varchar(3) 
active tinyint(1) 
password varchar(36) 

입니다

$query = "INSERT INTO accounts (name, mail, group, year, active, password) VALUES ('$name', '$email', '$group', '$year', '1', '$pass')";   
$result = mysql_query($query) or DIE(mysql_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 'group, year, active, password) VALUES ('Smith S. Ana Joy', 'ana' at line 1

예 또는 변수 i가 추가 오전 :

$name = Smith 
$email = ana.smith 
$group = A1 
$year = I 
$active = 1 
$pass = a 
+0

가능한 중복 [예약어를 MySQL의 테이블 또는 열 이름으로 사용하기 때문에 구문 오류가 발생했습니다] (http://stackoverflow.com/questions/23446377/syntax-error- 예약어 또는 테이블 이름 또는 열 이름 mysql을 사용하기 때문에) –

답변

3

GROUP은 mySQL에 reserved word입니다.

`group` 

또는 다른 열 이름을 사용

는 역 따옴표에 랩.

코드가 SQL injection (즉, 코드에 삽입되기 전에 각 변수가 새 니타 이징 됨)에서 보호되어 있는지 확인하십시오.

+0

+1 SQL 삽입 의미에 대해 +1 –

+0

항상 쿼리를 인용하십시오. 당신은 거기에 몇 가지 키워드를 가지고, "그룹", "비밀 번호", "년"모든 MySQL의 키워드입니다. $ query = "INSERT INTO 계정 ('name','mail','group','year','active','password') VALUES ('$ name', '$ email', '$ group' , '$ year', '1', '$ pass') "; $ result = mysql_query ($ query) 또는 DIE (mysql_error()); – Wrenbjor

1

GROUP은 예약어입니다. 해당 열 이름을 인용해야합니다 :

... mail, `group`, ... 
1

그룹은 MYSQL 명령이며 값 에서처럼 사용할 수 없습니다. 다음과 같이 필드를 탈출하십시오 :

"INSERT INTO 계정 (이름, 메일, 그룹, 연도, 활성, 비밀번호) VALUES ('$ name', '$ email', '$ group', '$ 년 ','1 ','$ 통과 ') ";

0

group은 예약어로, 백틱으로 묶어야합니다.

관련 문제