ОШИБКА 1064 (42000) при создании таблицы MySQL [закрыто]

Я пытаюсь создать свой собственный веб-сайт, и на своем веб-сайте я прошу людей ввести свое имя и написать небольшой рассказ. Когда они закончили, они нажимают «Отправить» и отправляют информацию в мою базу данных. Я работаю с MySQL и хочу создать таблицу, в которой я могу хранить информацию.Это мой код MySQL:

CREATE TABLE names (
    name PRIMARY KEY NOT NULL,
    message NOT NULL,
    IPv4 NOT NULL,
    browser NOT NULL,
    date NOT NULL,
    time NOT NULL,
);

Но когда я ввожу его в командную строку, он говорит:

ERROR 1064 (42000): 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 'PRIMARY KEY NOT NULL, message NOT NULL, 
    IPv4 NOT NULL, browser NOT NULL, date NO' at line 1

Вы можете сказать мне, что я сделал не так и как это исправить? Не знаю, поможет ли это, но я тоже включил свой PHP-скрипт. Это может быть немного запутано с именами, потому что мне пришлось переводить переменные на английский. Мой PHP-код (я создал его до того, как создал таблицу, и, как вы видите, мне удалось настроить «имена» моей базы данных, также я хочу назвать свою таблицу «именами»):

$name = $_POST['name'];
$message = $_POST['message'];
$user = 'user';
$password = 'Login';
$host = 'localhost:3036';
$browser = $_SERVER['HTTP_USER_AGENT'];
$ip = $_SERVER["REMOTE_ADDR"];
date_default_timezone_set('UTC+1');
$date = date("Y-m-d");
$time = date("H:i:s");
$connect = mysql_connect($host, $user, $password);
if (! $connect)
{
    $error = mysql_error();
    print "Sorry, could not connect: $error";
}
print "Connected!";
$database = "USE names";
$table = "INSERT INTO names (name, message, IPv4, browser, date, time) VALUES ($name, $message, $ip, $browser, $date, $time)";
if (! $database)
{
    $error=mysql_error();
    echo "\nCould not find database! Error: $mysql_error";
}
if (! $table)
{
    $error=mysql_error();
    echo "\nCould not write to database! Error: $error";
}
$close = mysql_close($connect);
if (! $close )
{
    $error=mysql_error();
    echo "\nCould not close connection! Error: $error";
}
echo "\nBedankt $name!";
0
задан 30 December 2016 в 07:51

2 ответа

Да Ваша последняя строка не должна содержать запятую ,, так как это - последняя строка, и больше переменных не прибудет после него. таким образом, код должен быть похожим на это:

CREATE TABLE names (
    name char(40) PRIMARY KEY NOT NULL,
    message varchar(100) NOT NULL,
    IPv4 char(50) NOT NULL,
    browser char(20) NOT NULL,
    date datetime NOT NULL,
    time int NOT NULL
);

Примечание, что последняя строка, time NOT NULL не имеет запятой в конце.

MySQL не очень полезен с там сообщениями об ошибках, они главным образом говорят Вам, что необходимо считать код снова, пока Вы не разбираетесь в нем.

Также Вы не сказали MySQL, какие данные войдут в эти поля. Действительно ли это - символ или число? Необходимо определить это как, data int primary key или data2 char(40) not null. На интервале Вы не должны определять длину переменной, но на символах Вы делаете.

0
ответ дан 7 October 2019 в 09:42

Существует ошибка с Вашим запросом к базе данных - Вы наклоняете место , прежде ).

Однако INSERT значения должны быть помещены между ', как 'value'. Это является ненужным, но это - хорошая практика.

Можно "генерировать" запрос путем добавления некоторых implode функции, как это:

$data = array("name" => $_POST["name"]);
$into = implode(", ", array_keys($data));
$values = "'".implode("', '", $data)."'";
$query = "INSERT INTO user ($into) VALUES ($values);");

Генерация запросов должна помочь Вам опустить будущие синтаксические ошибки.

0
ответ дан 7 October 2019 в 09:42

Другие вопросы по тегам:

Похожие вопросы: