Второй INSERT INTO не обрабатывается

Ubuntu не установил бы внутри вашего раздела Windows, скорее всего, он снова разбил запасной 40 ГБ и установил его внутри.

Я не уверен, почему он не выбрал установку Windows в GRUB, но вы можете попробовать выполнить этот ответ, чтобы исправить его

-1
задан 6 April 2018 в 09:17

3 ответа

Во-первых, таблица дегустаторов имеет все поля, помеченные как не равные нулю, и не имеет значения по умолчанию. Вы пытаетесь вставить строку, установив поле id, оставив другое значение null. Я бы не ожидал, что вторая вставка будет работать, потому что они объявлены как не равные нулю. Поэтому ваше заявление пытается вставить недопустимую запись. Установите значения по умолчанию для всех полей или установите их в инструкции insert.

Используйте

CREATE TABLE IF NOT EXISTS `tasters` (
  `id` int(11) NOT NULL,
  `name` varchar(32) NOT NULL DEFAULT '',
  `surname` varchar(32) NOT NULL DEFAULT '',
  `patronymic` varchar(32) NOT NULL DEFAULT '',
  `sex` int(11) NOT NULL DEFAULT '0',
  `birth` date NOT NULL DEFAULT '1970-01-01',
  `salary` int(11) NOT NULL DEFAULT '0',
  `marital_status` int(11) NOT NULL DEFAULT '0',
  `children` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

или

INSERT INTO tasters SET id=LAST_INSERT_ID(), name = '', surname = '', patronymic = '', sex = 0, birth = '1970-01-01', salary = '0', marital_status = 0, children = 0;

Во-вторых, не храните простой паролей пользователей таблицы. У вас есть функция паролей в MySQL. Используйте это для хранения паролей:

INSERT INTO users (login,password) VALUES('$login',password('$password'));

Когда вы проверяете пароль, используйте зашифрованные пароли:

select * from users where login = $entered_login and password = password($entered_password));

Таким образом, вы не используете простые пароли, и это увеличивает безопасность вашей системы: Кроме того, varchar(18) слишком мал: используйте varchar(64) или более.

1
ответ дан 22 May 2018 в 11:35
  • 1
    это нормально, если я поместил их в нуль? Действительно полезный ответ, я определяю все поля null, кроме «id» в дегустаторах, все работало, как я хочу! – ArtyProf 6 April 2018 в 10:09
  • 2
    Да, это нормально, если оставить их пустыми. – nobody 6 April 2018 в 10:16
  • 3
    Отредактировано и сохранено. – Fabby 7 April 2018 в 12:23

Во-первых, таблица дегустаторов имеет все поля, помеченные как не равные нулю, и не имеет значения по умолчанию. Вы пытаетесь вставить строку, установив поле id, оставив другое значение null. Я бы не ожидал, что вторая вставка будет работать, потому что они объявлены как не равные нулю. Поэтому ваше заявление пытается вставить недопустимую запись. Установите значения по умолчанию для всех полей или установите их в инструкции insert.

Используйте

CREATE TABLE IF NOT EXISTS `tasters` ( `id` int(11) NOT NULL, `name` varchar(32) NOT NULL DEFAULT '', `surname` varchar(32) NOT NULL DEFAULT '', `patronymic` varchar(32) NOT NULL DEFAULT '', `sex` int(11) NOT NULL DEFAULT '0', `birth` date NOT NULL DEFAULT '1970-01-01', `salary` int(11) NOT NULL DEFAULT '0', `marital_status` int(11) NOT NULL DEFAULT '0', `children` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

или

INSERT INTO tasters SET id=LAST_INSERT_ID(), name = '', surname = '', patronymic = '', sex = 0, birth = '1970-01-01', salary = '0', marital_status = 0, children = 0;

Во-вторых, не храните простой паролей пользователей таблицы. У вас есть функция паролей в MySQL. Используйте это для хранения паролей:

INSERT INTO users (login,password) VALUES('$login',password('$password'));

Когда вы проверяете пароль, используйте зашифрованные пароли:

select * from users where login = $entered_login and password = password($entered_password));

Таким образом, вы не используете простые пароли, и это увеличивает безопасность вашей системы: Кроме того, varchar(18) слишком мал: используйте varchar(64) или более.

1
ответ дан 17 July 2018 в 17:23

Во-первых, таблица дегустаторов имеет все поля, помеченные как не равные нулю, и не имеет значения по умолчанию. Вы пытаетесь вставить строку, установив поле id, оставив другое значение null. Я бы не ожидал, что вторая вставка будет работать, потому что они объявлены как не равные нулю. Поэтому ваше заявление пытается вставить недопустимую запись. Установите значения по умолчанию для всех полей или установите их в инструкции insert.

Используйте

CREATE TABLE IF NOT EXISTS `tasters` ( `id` int(11) NOT NULL, `name` varchar(32) NOT NULL DEFAULT '', `surname` varchar(32) NOT NULL DEFAULT '', `patronymic` varchar(32) NOT NULL DEFAULT '', `sex` int(11) NOT NULL DEFAULT '0', `birth` date NOT NULL DEFAULT '1970-01-01', `salary` int(11) NOT NULL DEFAULT '0', `marital_status` int(11) NOT NULL DEFAULT '0', `children` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

или

INSERT INTO tasters SET id=LAST_INSERT_ID(), name = '', surname = '', patronymic = '', sex = 0, birth = '1970-01-01', salary = '0', marital_status = 0, children = 0;

Во-вторых, не храните простой паролей пользователей таблицы. У вас есть функция паролей в MySQL. Используйте это для хранения паролей:

INSERT INTO users (login,password) VALUES('$login',password('$password'));

Когда вы проверяете пароль, используйте зашифрованные пароли:

select * from users where login = $entered_login and password = password($entered_password));

Таким образом, вы не используете простые пароли, и это увеличивает безопасность вашей системы: Кроме того, varchar(18) слишком мал: используйте varchar(64) или более.

1
ответ дан 23 July 2018 в 18:13

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

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