Ошибка MySQL: "ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL для правильного синтаксиса" [закрыто]
Я получаю эту ошибку от 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();
?>
3 ответов
ваша проблема кроется здесь:
INSERT INTO Member Details ...
потому что у вас есть пространство, он думает Member
- это имя таблицы и Details
- это посторонние, отсюда и ошибки.
если ваш стол Member Details
, вам нужно заключить его в задние тики:
INSERT INTO `Member Details` ...
Я на самом деле не такой большой поклонник пробелов в именах таблиц SQL (или имен файлов файловой системы, если на то пошло). В данном конкретном случае, я полагаю MemberDetails
(или Member_Details
, member_details
и, вероятно, другие) просто как читается, без требуя команда разбросаны по всему коду.
попробуйте отметить ( ` ) для каждого имени поля, чтобы результат мог быть таким
"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')";
синтаксис вставки неверен. Если member-это имя таблицы, оно должно быть примерно следующим
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')