【问题标题】:How to insert id from another table to a table using one form?如何使用一种形式将 id 从另一个表插入到表中?
【发布时间】: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();

            }

【问题讨论】:

    标签: php html database mysqli


    【解决方案1】:

    您试图在插入(执行)之前获取插入的 id。

    首先,你需要执行它:

    mysqli_stmt_execute($stmt);
    

    在之前添加:

    $user_id = mysqli_insert_id($conn);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      相关资源
      最近更新 更多