2011-04-09 2 views
0
mysql_query("INSERT INTO data(timestamp,type,lift,sets,reps,weight) VALUES(".$time.",".$_POST[type][$i].",".$_POST[lift][$i].",".$_POST[sets][$i].",".$_POST[reps][$i].",".$_POST[weight][$i].")")or die(mysql_error()); 

위 코드는 위와 같습니다. 모든 변수가 설정됩니다.PHP에서 MySQL 오류가 발생하는 다차원 배열 쿼리 삽입

내가 점점 오전 오류가 당신은 당신의 SQL 구문에 오류가

이다; 1 번 라인의 'Standing DB Hammer Curls, 1,2,3'근처에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오.

겉으로보기에는 이유가 없습니다.

문제에 누군가 clarifty을 수 있고, 다중 차원 배열이 너무 특히 지금까지 그들이 등

환호로 묶어야하기 위해 필요로하는 이유 이상적으로 설명

답변

1

당신이 주위 ' 작은 따옴표를 추가 변수를 삽입 하시겠습니까? 감사합니다 에릭

예를 사용해야 뭔가같은 :

이이

$t = "Test"; 
mysql_query("INSERT INTO data(mystring) VALUES ('" . $t . "')"); 

MySql Injection

편집을 방어하는 것을 잊지 마십시오 작동

$t = "Test"; 
mysql_query("INSERT INTO data(mystring) VALUES (" . $t . ")"); 

을 실패합니다을 사용하면 POST d 변수에있는 작은 따옴표를 이스케이프 처리 할 수 ​​있습니다.

편집 : 사출

간단히 소개 ....는 '폼에 입력 한 후 제출 한 경우 ' (작은 따옴표)로 문자열을 포장해야하기 때문에 다음은 삽입 또는 업데이트를 깰 수 암호.

다음 양식 "오브라이언"로 입력하면 다음 MySQL의 코드는 물론 잘못

INSERT INTO data(mystring) VALUES ('O'Brien') 

는, 그런 것들을 악용하여 웹 사이트에 항목을 얻기 위해 사용할 수있는 것 . 이것은 악용되었습니다 world wide recently

+1

MySQL 인젝션을 방어하기 위해 Jake의 답변에 추가하려면 삽입하려는 데이터의 인용 부호를 이스케이프해야합니다. – Eric

+1

예 에릭, 고마워. 편집 됨. –

+0

많은 감사. 왜 그런 것이 필요한지 명확히 할 수 있다면 크게 감사하겠습니다. 환호 –