Php 从一个表中获取id并在另一个表中插入

Php 从一个表中获取id并在另一个表中插入,php,mysqli,Php,Mysqli,我想在安全性中插入来自用户的相同id: <?php if (isset($_POST['reg_user'])) { require 'db.php'; $username = $_POST['username']; $email = $_POST['email']; $password = $_POST['password_1']; $passwordRepeat = $_POST['password_2']; $firstName =

我想在安全性中插入来自用户的相同id:

<?php

if (isset($_POST['reg_user'])) {
    require 'db.php';

    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = $_POST['password_1'];
    $passwordRepeat = $_POST['password_2'];
    $firstName = $_POST['firstname'];
    $lastName = $_POST['lastname'];
    $country = $_POST['country'];
    $city = $_POST['city'];
    $address = $_POST['address'];
    $zipCode = $_POST['zipCode'];

    if (empty($username) || empty($email) || empty($password) || empty($passwordRepeat) || empty($firstName) || empty($lastName) || empty($country) || empty($city) || empty($address) || empty($zipCode)) {
        header("Location: ../sign_up.php?error=emptyfields&uid=" . $username . "&mail=" . $email);
        exit();
    } elseif (strlen($username) < 3) {
        header("Location: ../sign_up.php?error=short_username=" . $username . "");
        exit();
    } elseif (strlen($username) > 17) {
        header("Location: ../sign_up.php?error=long_username=" . $username . "");
        exit();
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $username)) {
        header("Location: ../sign_up.php?error=invalidmailuid");
        exit();
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        header("Location: ../sign_up.php?error=invalidmail&uid=" . $username);
        exit();
    } elseif (!preg_match("/^[a-zA-Z0-9]*$/", $username)) {
        header("Location: ../sign_up.php?error=invaliduid&mail=" . $email);
        exit();
    } elseif ($password !== $passwordRepeat) {
        header("Location: ../sign_up.php?error=passwordcheck&uid=" . $username . "&mail=" . $email);
        exit();
    } else {
        $sql = "SELECT username FROM users WHERE username=?";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../sign_up.php?error=sqlerror");
            exit();
        } else {
            mysqli_stmt_bind_param($stmt, "s", $username);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
            $resultCheck = mysqli_stmt_num_rows($stmt);
            if ($resultCheck > 0) {
                header("Location: ../sign_up.php?error=usertaken&mail=" . $email);
                exit();
            } else {
                $sql = "INSERT INTO users (username, email, password) VALUES (?, ?, ?)";
                $stmt = mysqli_stmt_init($conn);
                if (!mysqli_stmt_prepare($stmt, $sql)) {
                    header("Location: ../sign_up.php?error=sqlerror");
                    exit();
                } else {
                    $hashedPwd = password_hash($password, PASSWORD_DEFAULT);

                    mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
                    mysqli_stmt_execute($stmt);

                    $sql = "INSERT INTO security (username, firstName, lastName, country, city, address, zipcode) VALUES (?, ?, ?, ?, ?, ?, ?)";
                    $stmt = mysqli_stmt_init($conn);
                    mysqli_stmt_prepare($stmt, $sql);
                    mysqli_stmt_bind_param($stmt, "sssssss", $username, $firstName, $lastName, $country, $city, $address, $zipCode);
                    mysqli_stmt_execute($stmt);

                    header("Location: ../sign_up.php?signup=succes");
                    exit();
                }
            }
        }
    }
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
} else {
    header("Location: ../sign_up.php");
    exit();
}

您可以使用

$conn->insert_id;

就在执行项目插入之后。($conn是msqli类的实例)

您可以使用

$conn->insert_id;

就在执行项目插入之后。($conn是msqli类的实例)

“因为它同时执行”-不,不,这些INSERT语句一个接一个地执行,而不是以某种方式“并行”执行。您需要停止手动检查错误。请阅读:不确定您的意思,但您可以从上一个查询中获取自动增量ID,并在下一个查询中使用它是的,dharman,这就是我想要的“因为它同时执行”-不,它不,这些INSERT语句一个接一个地执行,而不是以某种方式“并行”执行。您需要停止手动检查错误。请阅读:不确定您的意思,但您可以从上一个查询中获取自动增量ID,并在下一个查询中使用它。是的,达曼,这就是我想要的