【发布时间】:2019-04-12 16:57:29
【问题描述】:
我必须从 users 表中获取 user_id 并将其插入到患者表的 user_id 中,仅使用一个表单。
这是我正在使用的表格:
user_table: user_id 是自动递增的。
╔═════════╦══════════╦════════════════╦═══════════╗
║ user_id ║ level_id ║ email ║ password ║
╠═════════╬══════════╬════════════════╬═══════════╣
║ 1 ║ 5 ║ sasa@denva.com ║ sasadenva ║
║ 2 ║ 1 ║ tony@stark.com ║ tonystark ║
╚═════════╩══════════╩════════════════╩═══════════╝
patients_table:patients_id 是自动递增的。
+--------+---------+--------------+----------+-----------+--------+
| pat_id | user_id | name | address | number | sex |
| 1 | 1 | sasa mindred | manhatan | 987654329 | female |
| 2 | 2 | tony stark | new york | 123456789 | male |
+--------+---------+--------------+----------+-----------+--------+
我在这里为表格取了短名称。
$sql = "SELECT email FROM users WHERE email=?";
$stmt =mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../auth/register.php?error=sqlerror");
exit();
}else{
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultcheck= mysqli_stmt_num_rows($stmt);
if($resultcheck > 0) {
header("Location: ../auth/register.php?error=emailtaken&last_name=".$last."&first_name=".$first."&middle_name=".$middle."&sex=".$sex."");
exit();
}else{
$sql= "INSERT INTO users (level_id, email, password, created_at) VALUES (?, ?, ?, now())";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
header("Location: ../auth/register.php?error=sqlerror");
exit();
}else{
$hashedPwd = password_hash($password, PASSWORD_DEFAULT);
mysqli_stmt_bind_param($stmt, "iss", $lvl, $email, $hashedPwd);
$user_id = mysqli_insert_id($conn);
$sqli = "INSERT INTO patients (user_id, last_name, first_name, middle_name, sex) VALUES ($user_id, ?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
header("Location: ../auth/register.php?error=sqlerror");
exit();
}else{
mysqli_stmt_bind_param($stmt, "ssss", $last, $first, $middle, $sex);
mysqli_stmt_execute($stmt);
}
mysqli_stmt_execute($stmt);
header("Location: ../auth/register.php?signup=success".$conn->insert_id."");
exit();
}
}
}
我希望输出将用户表中的 user_id 插入到患者表的 user_id 中。
如果有人想知道,这是已解决的代码。
else{
$sql = "SELECT email FROM users WHERE email=?";
$stmt =mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../auth/register.php?error=sqlerror");
exit();
}else{
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultcheck= mysqli_stmt_num_rows($stmt);
if($resultcheck > 0) {
header("Location: ../auth/register.php?error=emailtaken&last_name=".$last."&first_name=".$first."&middle_name=".$middle."&sex=".$sex."");
exit();
}else{
$sql= "INSERT INTO users (level_id, email, password, created_at) VALUES (?, ?, ?, now())";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
header("Location: ../auth/register.php?error=sqlerror");
exit();
}else{
$hashedPwd = password_hash($password, PASSWORD_DEFAULT);
mysqli_stmt_bind_param($stmt, "iss", $lvl, $email, $hashedPwd);
mysqli_stmt_execute($stmt);
$user_id = mysqli_insert_id($conn);
$sqli = "INSERT INTO patients (user_id, last_name, first_name, middle_name, sex) VALUES ($user_id, ?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sqli)){
header("Location: ../auth/register.php?error=sqlerror");
exit();
}else{
mysqli_stmt_bind_param($stmt, "ssss", $last, $first, $middle, $sex);
}
mysqli_stmt_execute($stmt);
header("Location: ../auth/register.php?signup=success".$conn->insert_id."");
exit();
}
【问题讨论】: