でnullまたは空の外部キーに私はPHPでデータベースとフォームについての問い合わせがありますデータ挿入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の関係にあります。メインセッションキーは、外部キーi nユーザー。
PHPでは、ユーザー用のフォームがあります。すべてがテーブルに挿入されていますが、sesionsテーブルのIDがautoincrementなのは、ユーザー自身が外国語で書かれていないので、問題は1つしかありません。
この時点で私は既にシステムに複数のユーザーを登録していますが、すべてがうまく挿入されますが、外部キーは常に空です。セッションの自動インクリメントが割り当てられた番号には関連付けられません。
次のように私はそれを行う挿入するには:
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として外部キーを持っていると言わなければならない追加、単にユーザー(名前、姓、名前)に登録するデータは登録されていませんが、外部キーを除いてすべてが不都合なく登録されていればNULLになります。
私はこの問題を手伝ってもらえますか、もしあなたが私のやり方や私が間違っていることを教えてもらえますか?
ここで、セッションIDを使用してusersテーブルを更新しようとしていますか? – Shadow
更新ステートメントを発行することによって... – Shadow
@ Shadow これは何をしたいのですか 私はどのようにしてsesion_idがuserテーブルにあるのかを知りたいのですが、それはプライマリとして持つIDに従って更新されますテーブルセションのキー。 – rodrigo2324