我在PHP中有关于数据库和表单的查询:
我有以下用户表
CREATE TABLE IF NOT EXISTS `login`.`usuarios` (
`nombres` VARCHAR(30) NULL,
`apellidos` VARCHAR(30) NULL,
`cedula` VARCHAR(13) NOT NULL,
`telefono` VARCHAR(15) NULL,
`direccion` VARCHAR(45) NULL,
`sexo` VARCHAR(10) NULL,
`sesion_id` INT(10) NOT NULL,
PRIMARY KEY (`cedula`),
INDEX `fk_usuarios_sesion_idx` (`sesion_id` ASC),
CONSTRAINT `fk_usuarios_sesion`
FOREIGN KEY (`sesion_id`)
REFERENCES `login`.`sesion` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
我有会话表
CREATE TABLE IF NOT EXISTS `login`.`sesion` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`correo` VARCHAR(45) NULL,
`usuario` VARCHAR(10) NULL,
`password` VARCHAR(100) NULL,
`last_session` DATETIME NULL,
`activacion` INT NULL,
`token` VARCHAR(40) NULL,
`token_password` VARCHAR(100) NULL,
`password_request` INT(11) NULL,
`id_tipo` INT(11) NULL,
`estatus` INT(2) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
它们彼此相关,从1到1.主会话密钥作为用户的外键。
在PHP中,我有一个表单供用户在我的系统上注册。所有东西都在表中正常插入,但我只有一个问题,因为如果在sesions表中ID是自动增量的,因为它本身就是外来的用户也没有被填充?
此时我已经在我的系统上注册了几个用户,并且所有内容都插入良好,但外键始终为空,它与会话中分配自动增量的编号无关。
要插入我,请按以下方式进行:
function registraUsuario($nombres, $apellidos, $cedula, $telefono, $direccion, $sexo){
global $mysqli;
$stmtr= $mysqli->prepare("INSERT INTO usuarios (nombres, apellidos, cedula, telefono, direccion, sexo) VALUES(?,?,?,?,?,?)");
$stmtr->bind_param('ssssss', $nombres, $apellidos, $cedula, $telefono, $direccion, $sexo);
if ($stmtr->execute()){
return true;
} else {
return 0;
}
}
function registraSesion($email, $usuario, $pass_hash, $activo, $token, $tipo_usuario, $estatus){
global $mysqli;
$stmt = $mysqli->prepare("INSERT INTO sesion (correo, usuario, password, activacion, token, id_tipo, estatus) VALUES(?,?,?,?,?,?,?)");
$stmt->bind_param('sssisii', $email, $usuario, $pass_hash, $activo, $token, $tipo_usuario, $estatus);
if ($stmt->execute()){
return $mysqli->insert_id;
} else {
return 0;
}
}
另外我必须说我将外键设为NULL,因为如果我不把它设为NULL,那么只是为用户注册的数据(名称,姓氏,dni ..)没有注册...但如果我没有注册除了外键之外,所有内容都没有任何不便之处。
如果你能帮我解决这个问题,或者你可以告诉我我该怎么做或我做错了什么?
答案 0 :(得分:1)
如果只谈论代码,我认为你必须先注册会话,然后获取会话ID,然后注册用户。
但是对于传统思维,session
表应该有user
表中的外键,但不是相反。