#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)
Ответ №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);