2013-04-15 6 views
-1

완전히 엉망입니다. 질문 제목에 명시된 바와 같이 오류가 발생하며 그 이유는 알 수 없습니다. 내 모든 coloumns 텍스트 이름을 가지고 거기에 아무런 참조가 내 코드에서 "1"라는 열을 알고있다. 내가 누군가를 도와서이 문제를 해결할 수 있도록 약간 수정했다. 아마도 여기에 문제가있다. 나는 알지 못한다.필드 목록의 알 수없는 열 1?

(string)$insert; 
if(is_array($_POST['Year'])){ 
    foreach($_POST['Year'] as $k=>$v){ 
     $insert .= "($_POST['Name'][$k], $_POST['Short'][$k], $_POST['Med'][$k], $_POST['Long'][$k], $_POST['VLong'][$k], $_POST['Extreme'][$k], $_POST['LJump'][$k], $_POST['HJump'][$k], $_POST['Shotputt'][$k], $_POST['Discuss'][$k], $_POST['Javelin'][$k], $_POST['Date'][$k], $_POST['Year'][$k]),"; 
    } 
    $insert = substr_replace($insert ,0,-1); 
}else{ 
    $insert .= "($_POST['Name'], $_POST['Short'], $_POST['Med'], $_POST['Long'], $_POST['VLong'], $_POST['Extreme'], $_POST['LJump'], $_POST['HJump'], $_POST['Shotputt'], $_POST['Discuss'], $_POST['Javelin'], $_POST['Date'], $_POST['Year'])"; 
} 
$sql="INSERT INTO results_main 
(`Name`, `Short`, `Med`, `Long`, `VLong`, `Extreme`, `LJump`, `HJump`, `Shotputt`, `Discuss`, `Javelin`, `Date`, `Year`) 
VALUES 
".$insert; 

$result = mysql_query($sql) or die(mysql_error()); 

// close connection 
mysql_close($conn); 
+2

'echo $ sql '의 결과는 이전 질문에서 말한 것입니까? –

+0

질문을 업데이트했습니다. echo $ sql 출력을 아래에서 찾으십시오. INSERT INTO results_main ('Name','Short','Med','Long','VLong','Extreme','LJump','HJump' (1, 1, 1, 1, 1, 1, 2, 3, 4) 1, 1, 1, 2, 2, 2, 2, 3, 4, 5, 6) 2, 2, 2, 2, 2, 2013-04-26, 10); '필드 목록'에서 알 수없는 열 '1' –

+0

경고 : SQL 주입이 가능합니다. 이 문자열을 연결하는 대신 매개 변수화 된 쿼리를 사용하십시오. –

답변

1

이유는 백틱으로 값을 래핑하기 때문입니다. 문자열 리터럴 인 경우 값을 작은 따옴표로 묶어야합니다. MySQL은 주위의 역 따옴표로 인해 값을 열로 취급합니다. 역 인용 부호는 문자열 리터럴이 아닌 식별자에 사용됩니다. 그래서 대략적인 예제는 다음과 같습니다.

INSERT INTO tableName (col1, col2, col3) 
VALUES ('hello', 'world', 'stack')