Вставка в две разные таблицы базы данных - PullRequest
0 голосов
/ 21 января 2019

У меня есть форма, которая будет вставлять пользовательский ввод из формы в базу данных. Я хочу сохранить электронную почту для пользователей.

Итак, я хочу получить электронную почту в таблице счетов, а затемимя пользователя и пароль в таблице пользователей.Для тех, кто интересуется, почему, приложение, которое я хочу создать, позволит пользователям создавать нового пользователя после смерти, но может иметь материалы, хранящиеся в учетных записях, которые будут перенесены.

Пробовал работать с несколькими одинаковыми кодами, нопросто получаешь слишком много и теряешься во всем этом должен быть более простой способ, чем многократное копирование растянутого кода.

Спасибо заранее.

$sql = "SELECT user_name FROM users WHERE user_name=?";
    $stmt = mysqli_stmt_init($conn);
    if(!mysqli_stmt_prepare($stmt, $sql)) {
        header("Location: ../register.php?error=Sql_Error");
        exit();

    } else {


    mysqli_stmt_bind_param($stmt, "s", $character);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    $resultCheck = mysqli_stmt_num_rows($stmt);

     if ($resultCheck > 0) {
         header("Location: ../register.php?error=CharacterTaken&email=".$emailAddress); 
         exit();
     } else {

        $sql = "INSERT INTO users (user_name, user_email, user_password) VALUES (?, ?, ?)";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../register.php?error=Sql_Error");
            exit;


        } else {

        $hashedPwd = password_hash($password, PASSWORD_DEFAULT);

        mysqli_stmt_bind_param($stmt, "sss", $character, $emailAddress, $hashedPwd);
        mysqli_stmt_execute($stmt);
        header("Location: ../register.php?success=Account Created.");

1 Ответ

0 голосов
/ 21 января 2019

Если вы хотите вставить отдельные данные в отдельные таблицы, я предлагаю вам просто использовать 2 отдельных запроса INSERT.

Поскольку одна часть вашего кода уже делает это, самый простой способ - это настроить ипродублируйте его:

Замените эту часть кода

$sql = "INSERT INTO users (user_name, user_email, user_password) VALUES (?, ?, ?)";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../register.php?error=Sql_Error");
            exit;


        } else {

        $hashedPwd = password_hash($password, PASSWORD_DEFAULT);

        mysqli_stmt_bind_param($stmt, "sss", $character, $emailAddress, $hashedPwd);
        mysqli_stmt_execute($stmt);

На это:

$sql = "INSERT INTO users (user_name, user_password) VALUES (?, ?)";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../register.php?error=Sql_Error");
            exit;
        } else {

        $hashedPwd = password_hash($password, PASSWORD_DEFAULT);

        mysqli_stmt_bind_param($stmt, "ss", $character, $hashedPwd);
        mysqli_stmt_execute($stmt);

$sql = "INSERT INTO accounts (user_email) VALUES (?)";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../register.php?error=Sql_Error");
            exit;
        } else {

        mysqli_stmt_bind_param($stmt, "s", $emailAddress);
        mysqli_stmt_execute($stmt);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...