Ошибка в параметре DATATIME синтаксиса SQL

#php #mysql #sql #sql-server

#php #mysql #sql #sql-сервер

Вопрос:

Я запустил новый php-скрипт и впервые использовал параметр DATATIME в mysql. Я думаю, что это создает проблему.

Моя таблица sql :

 id int(6) auto_increment,
name varchar(40) not null,
pseudo varchar(40) not null,
email varchar(40) not null,
password varchar(40) not null,
plan varchar(40) not null,
date DATETIME DEFAULT CURRENT_TIMESTAMP,
points int(6) not null,
primary key(id,name,pseudo,email,password,date,points,plan)
 

Когда я пытаюсь выполнить этот запрос:

 insert into users(NULL,"name","pseudo","email@email.com","Pass1919",NULL,
"100");
 

Эта ошибка отображает :

ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘NULL, «name», «псевдо»,»email@email.com «,»Pass1919″,NULL,»100»)’ в строке1

Комментарии:

1. почему у вас такой большой составной первичный ключ key(id,name,pseudo,email,password,date,points,plan)

2. dev.mysql.com/doc/refman/5.5/en/insert.html

Ответ №1:

попробуйте это..

     insert into users(name,pseudo,email,password,paln,date,poits)
 values("name","pseudo","email@email.com","Pass1919",NULL, "100");
 

Ответ №2:

Как говорили другие, и

 insert into users(name,pseudo,email,password,paln,date,poits)
values("name","pseudo","email@email.com","Pass1919",'', NULL, "100");
 

планируйте varchar(40) not null,

Что они пропустили, так это то, что plan не равен null, и либо введите null для date, либо я бы предпочел просто полностью его опустить.

 insert into users(name,pseudo,email,password,paln,poits)
values("name","pseudo","email@email.com","Pass1919",'', "100");
 

Если вы считаете поля и входные данные в некоторых из приведенных выше ответов, они не равны. Список полей не является обязательным для вставки, но я бы использовал их для удобства чтения и чтобы убедиться, что у вас правильный порядок и количество входных данных.

Последнее, что нужно изменить на первичный ключ, только на поле автоматического увеличения, если вам нужны другие составные индексы, вы должны добавить их отдельно и сделать уникальными в соответствии с вашими требованиями. Первичные ключи должны быть суррогатным ключом, как определено таким образом

  • значение уникально для всей системы, поэтому никогда не используется повторно
  • значение генерируется системой
  • значение не может быть изменено пользователем или приложением
  • значение не содержит семантического значения
  • значение не отображается пользователю или приложению
  • значение не состоит из нескольких значений из разных доменов.

Другие ключи должны относиться к данным, и, как я уже сказал, если вам нужен составной уникальный ключ или просто уникальный файл, подобный электронной почте, отделите его от основного.

Комментарии:

1. Большое вам спасибо .. я долгое время обходился без mysql .. спасибо, что напомнили :))) (y)

Ответ №3:

Вы должны использовать ключевое слово values:

 insert into users values(NULL,"name","pseudo","email@email.com","Pass1919",NULL,
"100");
 

Ответ №4:

Не передавайте первый параметр как NULL , поскольку вы уже указали его в качестве первичного ключа и автоматического увеличения. используйте это

 insert into users values("name","pseudo","email@email.com","Pass1919",NULL, "100");
 

Ответ №5:

Попробуйте это

 INSERT INTO users(
  `name`,
  `pseudo`,
  `email`,
  `password`,
  `plan`,
  `points`
)
VALUES (
  NULL, 
 'name', 
 'pseudo', 
 'email@email.com', 
 'Pass1919', 
 NULL, 
 '100');
 

Комментарии:

1. @user3779014 не забыл принять / проголосовать, если полезный ответ

Ответ №6:

попробуйте добавить имя поля вашей таблицы, в которое вы хотите вставить значения с values ключевым словом. кроме того, идентификатор автоматического увеличения не может быть NULL , если вы не хотите отправлять id, date значения, оставьте, что он будет автоматически собирать значения с шагом и текущей меткой времени

  insert into users(name,pseudo,email,password,plan,points) values ('name','pseudo','email@email.com','Pass1919','','100');
 

Ответ №7:

Кроме того, когда вы имеете дело с целыми числами, вам не нужно заключать их в кавычки при вставке, чтобы вы могли

       insert into users(name,pseudo,email,password,plan,date,points)
 values("name","pseudo","joe.bloggs@mydomain.com","S3CuR3", "PLAN", "2014-06-26", 100);