2013-11-04 2 views
-1

데이터베이스에서 가져온 문자열이 포함 된 선택 목록이 있고 여러 문자열에 공백이 포함되어 있으며 오류가 발생합니다. 먼저 PHP가 공백을 읽지 않았습니다. 견적을 사용하여 그것을 고쳤지 만 그 오류는 여전히 존재합니다. 공백이 포함 된 문자열을 보내면 SQL 구문 오류가 발생합니다.

하나 개의 파일 내 PHP 코드 :

$AllDepartements = $db->getAllDepartements(); 
echo "<select name='Major' style='width: 270px'><option value=''>Select  Major</option>"; 
While ($row = mysql_fetch_array($AllDepartements)) 
{ 
$Major = $row['DName']; 
print "<option value='".$Major."'>$Major</option>"; 

} 
print "</select><br>"; 

를이는 현재 부가 기능의 함수 호출 : 마지막으로

else if($tag =='add'){ 
$SSN = $_POST['SSN']; 
$Class = $_POST['Class']; 
$Major = $_POST['Major']; 
$Minor = $_POST['Minor']; 

if($db->addStudent($SSN,$Class,$Major,$Minor)) 
header('Location:' . $form . '.php?tag=list'); 
else 
echo mysql_error(); 
//echo "ERROR!"; 
} 

및 함수 자체 :

public function addStudent($SSN,$Class,$Major,$Minor) {  
    if($result = mysql_query(" INSERT INTO student (SSN,Class,Major,Minor) VALUES ('$SSN','$Class',$Major,$Minor ")) { 
     return true ; 
    } 
    else 
     return false; 
} 

오류 수신 :

SQL 구문에 오류가 있습니다. 당신은 닫히지 않았다 VALUES 괄호 라인 1

+0

닫기 괄호가 하나의 폐쇄' "'의 반대쪽에있다., 쿼리를 에코 먼저 몇 가지 디버깅을 수행하십시오. – Nanne

+0

@deceze :이 질문과 중복되는 것은 무엇입니까? 내 말은, 같은 문제가이 코드에있는 것입니다.하지만 그건 질문이 아닙니다. 그렇죠? 그것은 심하게 연구되었습니다. – Nanne

답변

0

에서 ''근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 :

$result = mysql_query("INSERT INTO student (SSN,Class,Major,Minor) VALUES ('$SSN','$Class',$Major,$Minor)"); 

을 또한, 당신이 사용하고있는 나중에 생략 될 mysql의 더 이상 사용되지 않는 라이브러리입니다. mysqli 또는 PDO와 같은 인터페이스를 사용하십시오. 당신의 INSERT 쿼리

0

구문 오류 ...

"INSERT INTO student (SSN,Class,Major,Minor) VALUES ('$SSN','$Class',$Major,$Minor)" 
                       ^^^^^ 
관련 문제