ERROR 1064 (42000) criando a tabela MySQL [closed]

0

Eu tento construir meu próprio site, e no meu site eu peço que as pessoas digitem seu nome e escrevam uma pequena história. Quando eles terminam, eles clicam em enviar e enviam as informações para o meu banco de dados. Eu trabalho com o MySQL, e eu quero criar uma tabela onde eu possa armazenar as informações. Este é o meu código MySQL:

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

Mas quando eu digito isso no meu prompt de comando, diz:

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

Você pode me dizer o que eu fiz de errado e como consertar isso? Eu não sei se é útil, mas incluí meu script PHP também. Pode ser um pouco confuso com nomes porque eu tive que traduzir as variáveis para o inglês. Meu código PHP é (eu criei antes de criar a tabela, e como você viu eu consegui configurar o meu banco de dados 'nomes', também eu quero chamar minha tabela de 'nomes'):

$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!";
    
por user274595 21.05.2014 / 00:16

2 respostas

0

Sim, sua última linha não deve conter uma vírgula , , já que é a última linha e mais nenhuma variável virá depois dela. então o código deve ficar assim:

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
);

Observe que a última linha, time NOT NULL , não tem uma vírgula no final.

O MYSQL não ajuda muito com as mensagens de erro que eles geralmente dizem que você precisa ler o código novamente até acertar.

Além disso, você não disse ao MYSQL que tipo de dados irá para esses campos. É um char ou um número? Você precisa especificar isso como data int primary key ou data2 char(40) not null . No int você não precisa especificar o tamanho da variável, mas sim os caracteres que você faz.

    
por Alvar 21.05.2014 / 00:30
0

Existe um erro com a sua consulta ao banco de dados - você não pode colocar , antes de ) .

No entanto, os valores de INSERT devem ser colocados entre ' , como 'value' . É desnecessário, mas é uma boa prática.

Você pode "gerar" sua consulta adicionando algumas funções implode , assim:

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

A geração de consultas deve ajudá-lo a omitir futuros erros de sintaxe.

    
por Roomy 21.05.2014 / 00:39