2011-10-25 1 views
6

내가 MySQL의에서이 오류가 점점 오전 : 여기MySQL의 오류 : 'SQL 구문에 오류가, 오른쪽 구문 MySQL 서버 버전에 해당하는 설명서를 확인 "

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 'Details 
(title, first, last, NRIC, po' at line 1 

코드입니다 :

<?php 
    $link = mysql_connect("localhost", "root", ""); 
    if (!$link) { die('Could not connect: ' . mysql_error()); } 

    $db_selected = mysql_select_db(Membership, $link); 
    if (!$db_selected) { die('Can\'t use' . Membership . ':' . mysql_error()); } 

    $value1 = $_POST["title"]; 
    $value2 = $_POST["first"]; 
    $value3 = $_POST["last"]; 
    $value4 = $_POST["NRIC"]; 
    $value5 = $_POST["birthdate"]; 
    $value6 = $_POST["birthmonth"]; 
    $value7 = $_POST["birthyear"]; 
    $value8 = $_POST["address"]; 
    $value9 = $_POST["postal"]; 
    $value10 = $_POST["genderSelect"]; 
    $value11 = $_POST["contact"]; 
    $value12 = $_POST["email"]; 
    $value13 = $_POST["enter"]; 
    $value14 = $_POST["password"]; 
    $value15 = $_POST["Updates"]; 
    $value16 = $_POST["Terms"]; 
    $value17 = $_POST["submit_but"]; 
    $value18 = $_POST["status"]; 

    $sql = "INSERT INTO Member Details (title, first, last, NRIC, birthdate, birthmonth, birthyear, address, postal, genderSelect, contact, email, enter, password, Updates, Terms, submit_but, status) VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6', '$value7', '$value8', '$value9', '$value10', '$value11', '$value12', '$value13', '$value14', '$value15', '$value16', '$value17', '$value18')"; 

    if (!mysql_query($sql)){  //The error is thrown here 
    die('Error: ' . mysql_error()); 
    } 
    mysql_close(); 
?> 
+2

당신 하려고 생각하고, 당신이 원하는 것이라고 생각하는 것에 대한 조언을하는 대신, "지침을 읽으십시오"라고 말합니다. 그래서 ... 설명서를 읽으십시오 : http://dev.mysql.com/doc/refman/5.0/en/select.html –

+0

@EricLeschinski 그것은 단지 의견 이었지만 내 문제가 무엇인지 깨닫게했습니다. 필드 이름은 MSSQL에서는 유효하지만 MySQL에서는 예약어입니다. –

답변

12

같은 것을해야한다 관계없는, 따라서 오류. 테이블이 Member Details 경우

, 당신은 다시 진드기 내에 동봉해야합니다

INSERT INTO `Member Details` ... 

내가 SQL 테이블 이름에 공백 (또는 파일 시스템 파일 이름의 큰 팬에 대한 사실이 아니에요 그 문제). 이 특별한 경우에 MemberDetails (또는 Member_Details, member_details 등)은 코드 전체에 흩어져있는이없는 없이 읽을 수 있습니다. 각 필드 이름에 대한

+0

안녕하세요, 나는 여전히 같은 초기 오류가 발생했습니다. – exxcellent

+0

@exxcellent : 그럴 것 같아요 ... - 여기에서 재치있게 노력하고 있습니다 :-) '세부 사항'에 대해 불평하는 오류가 발생할 수있는 방법은 없습니다. if 그것은 적절히 인용됩니다. 너의 테이블 이름이 뭐니? – paxdiablo

+0

@exxcellent - 테이블 이름에 공백을 사용하는 것은 좋지 않습니다. INSERT INTO member_details 대신 밑줄을 사용해야합니다. 개인적으로 소문자 만 사용합니다. – pmrotule

3

삽입 구문이 잘못되었습니다.

INSERT INTO Member Details ... 

당신이 거기에 공간이 있기 때문에,이 Member 생각 테이블 이름이고 Details은 다음과 같습니다 구성원이 표는 그 이름을 경우 그것은 당신의 문제가 여기에있다 다음

INSERT INTO Member (title, first, last, NRIC, birthdate, birthmonth, birthyear, address, postal, genderSelect, contact, email, enter, password, Updates, Terms, submit_but, status) VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6', '$value7', '$value8', '$value9', '$value10', '$value11', '$value12', '$value13', '$value14', '$value15', '$value16', '$value17', '$value18') 
4

시도 마크 (``) 결과는 같을 수 있도록이 당신의 SQL 쿼리조차 무엇을 이해하기 시작 수 없을 정도로 잘못 때 MySQL은 당신이 오류를 제공

"INSERT INTO `Member Details` (`title`, `first`, `last`, `NRIC`, `birthdate`, `birthmonth`, `birthyear`, `address`, `postal`, `genderSelect`, `contact`, `email`, `enter`, `password`, `Updates`, `Terms`, `submit_but`, `status`) 
VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6', '$value7', '$value8', '$value9', '$value10', '$value11', '$value12', '$value13', '$value14', '$value15', '$value16', '$value17', '$value18')"; 
+0

이렇게하면 오류가 해결되었습니다. Arif에게 감사드립니다. 나는 보통 작은 따옴표를 사용하고 있으며 오류를 수정 ('')했다! – Damodog