Em primeiro lugar, a tabela de provadores tem todos os campos marcados como não nulos e não tem nenhum padrão. Você está tentando inserir uma linha configurando apenas o campo id
, deixando o outro com um valor null
. Eu não esperaria que a segunda inserção funcione porque elas são declaradas como não nulas. Então, sua instrução tenta inserir um registro inválido. Definir valores padrão para todos os campos ou defini-los todos em uma instrução de inserção.
Use
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;
ou
INSERT INTO tasters SET id=LAST_INSERT_ID(), name = '', surname = '', patronymic = '', sex = 0, birth = '1970-01-01', salary = '0', marital_status = 0, children = 0;
Em segundo lugar, não armazene senhas simples nos usuários da tabela. Você tem uma função de senha no MySQL. Use isso para armazenar senhas:
INSERT INTO users (login,password) VALUES('$login',password('$password'));
Quando você verificar senhas, use senhas criptografadas:
select * from users where login = $entered_login and password = password($entered_password));
Dessa forma, você não opera com senhas simples e isso aumenta a segurança do seu sistema: Além disso, varchar(18)
é muito pequeno: use varchar(64)
ou mais.