2011-10-25 71 views
6

Tôi nhận được lỗi này từ MySQL:MySQL Lỗi: "một lỗi trong cú pháp SQL của bạn; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn cho đúng cú pháp"

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 

Đây là mã:

<?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

MySQL cung cấp cho bạn lỗi này khi truy vấn SQL của bạn là để bị thay đổi mà nó thậm chí không thể bắt đầu hiểu những gì bạn đang cố gắng làm và thay vì đưa ra lời khuyên nhắm mục tiêu theo ý bạn muốn, nó sẽ cho bạn biết "hãy đọc hướng dẫn". Vì vậy ... Hãy đọc hướng dẫn: http://dev.mysql.com/doc/refman/5.0/en/select.html –

+0

@EricLeschinski Trong khi nó chỉ là một bình luận nó làm cho tôi nhận ra vấn đề của tôi là gì - một tên trường là hợp pháp trong MSSQL nhưng là một từ dành riêng trong MySQL. –

Trả lời

12

Vấn đề của bạn nằm ở đây:

INSERT INTO Member Details ... 

Bởi vì bạn có một không gian ở đó, nó nghĩ Member là tên bảng và Details là không liên quan, do đó lỗi.

Nếu bảng của bạn là Member Details, bạn cần phải đặt nó bên trong tích tắc trở lại:

INSERT INTO `Member Details` ... 

Tôi thực sự không phải là lớn một fan hâm mộ của khoảng trống trong tên bảng SQL (hoặc tên tập tin hệ thống tập tin cho chuyện đó). Trong trường hợp cụ thể này, tôi tin rằng MemberDetails (hoặc Member_Details, member_details và có thể là những người khác) chỉ có thể đọc được, mà không cần yêu cầu sử dụng các dấu gạch chéo nằm rải rác trong suốt mã của bạn.

+0

hi, sau khi làm điều đó tôi vẫn còn có cùng một lỗi ban đầu – exxcellent

+0

@exxcellent: có vẻ như ... không - Tôi đang cố gắng để được khéo léo ở đây :-) Không có cách nào bạn có thể nhận được một lỗi phàn nàn về 'Chi tiết' nếu nó được trích dẫn đúng cách. Tên bàn của bạn là gì? – paxdiablo

+0

@exxcellent - Sử dụng dấu cách trong tên bảng không phải là một phương pháp hay. Bạn nên sử dụng dấu gạch dưới thay vì 'INSERT INTO member_details'. Cá nhân, tôi chỉ sử dụng chữ thường. – pmrotule

3

Cú pháp chèn của bạn sai. Nếu thành viên là bàn đặt tên chúng nó phải giống như sau

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

thử đánh dấu (``) cho mỗi tên trường nên kết quả có thể như thế này

"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

Điều này đã sửa lỗi cho tôi !! Cảm ơn Arif. Tôi đã sử dụng dấu nháy đơn bình thường và sử dụng ('') đã sửa lỗi! – Damodog

Các vấn đề liên quan