Php 如何使用一个表单将id从另一个表插入到一个表中?

Php 如何使用一个表单将id从另一个表插入到一个表中?,php,html,database,mysqli,Php,Html,Database,Mysqli,我必须从用户表中获取user\u id,并仅使用一个表单将其插入患者表的user\u id 以下是我正在使用的表格: user\u table:user\u id是自动递增的 ╔═════════╦══════════╦════════════════╦═══════════╗ ║ user_id ║ level_id ║ email ║ password ║ ╠═════════╬══════════╬════════════════╬═══════════╣ ║ 1

我必须从用户表中获取
user\u id
,并仅使用一个表单将其插入患者表的
user\u id

以下是我正在使用的表格:
user\u table
user\u id
是自动递增的

╔═════════╦══════════╦════════════════╦═══════════╗ 
║ user_id ║ level_id ║  email         ║  password ║ 
╠═════════╬══════════╬════════════════╬═══════════╣ 
║ 1       ║  5       ║ sasa@denva.com ║ sasadenva ║ 
║ 2       ║  1       ║ tony@stark.com ║ tonystark ║ 
╚═════════╩══════════╩════════════════╩═══════════╝
+--------+---------+--------------+----------+-----------+--------+
| pat_id | user_id | name         | address  | number    | sex    |
| 1      | 1       | sasa mindred | manhatan | 987654329 | female |
| 2      | 2       | tony stark   | new york | 123456789 | male   |
+--------+---------+--------------+----------+-----------+--------+
患者表:患者id是自动递增的

╔═════════╦══════════╦════════════════╦═══════════╗ 
║ user_id ║ level_id ║  email         ║  password ║ 
╠═════════╬══════════╬════════════════╬═══════════╣ 
║ 1       ║  5       ║ sasa@denva.com ║ sasadenva ║ 
║ 2       ║  1       ║ tony@stark.com ║ tonystark ║ 
╚═════════╩══════════╩════════════════╩═══════════╝
+--------+---------+--------------+----------+-----------+--------+
| 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();

                }


            }
        }
我希望输出将users表中的user\u id插入patients表的user\u 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();

            }

您正在尝试在插入(执行)之前获取插入的id

首先,您需要执行它:

mysqli_stmt_execute($stmt);
将其添加到:

$user_id = mysqli_insert_id($conn);