将输入值插入具有相同userId的两个不同表中

时间:2019-05-18 11:29:19

标签: php mysqli

我需要将用户名,密码,邮件,名字和姓氏的值发送到数据库中的两个不同表中。我用这段代码实现了这一点,并且我得到了正确的值。我有一个问题。当用户信息进入“用户”表时,它会自动生成一个userId。我需要使用相同的userId并将其放入另一个表“ usermeta”中,以将信息连接到正确的用户。现在发生的是,我在users表中获得了一个userId,但是在usermeta表中,所有新用户的userId = 0。谁能帮我吗?

if (isset($_POST['username']) and isset ($_POST['password'])) {
    $username   = $mysqli->real_escape_string($_POST['username']);
    $password   = md5($mysqli->real_escape_string($_POST['password']));
    $email      = $mysqli->real_escape_string($_POST['mail']);
    $fname      = $mysqli->real_escape_string($_POST['fname']);
    $lname      = $mysqli->real_escape_string($_POST['lname']);

    $query = <<<END
    INSERT INTO users(username,pass,email,admin)
    VALUES('{$username}','{$password}','{$email}','{$_POST['admin']}')
END;

    $q = <<<END
    INSERT INTO usermeta(first_name,last_name)
    VALUES('{$fname}','{$lname}')
END;

if ($mysqli->query($query) !== TRUE) {
    die("Could not query database" . $mysqli->errno . " : " . $mysqli->error);
    }
if ( $mysqli->query($q) !== TRUE) {
    die("Could not query database" . $mysqli->errno . " : " . $mysqli->error);
    header('Location:home.php');
    } 
}

我在代码中得到了一个表格,该信息来自数据库,但是正是php代码使我认为错误排除了该代码。

谢谢!

编辑:

我已尝试实施您的不同评论。非常感谢您的回答! 如果我尝试获取$ query和$ q之间的最新ID,则输出为0。如果我使用以下命令:

if ($mysqli->query($query) === TRUE) {
    $last_id = $mysqli->insert_id;
    echo $last_id;
} else {
    echo "Error: " . $query . "<br>" . $mysqli->error;
}

我得到正确的ID。但是,如何在新的$ q中使用该变量?似乎如果if完成,功能就会中断。

谢谢! :)

2 个答案:

答案 0 :(得分:0)

您可以使用LAST_INSERT_ID()来检索在上一次插入中创建的自动增量ID的值。 (此处{Docs

所以尝试:

$q = <<<END

INSERT INTO usermeta(first_name,last_name, userId)
VALUES('{$fname}','{$lname}', LAST_INSERT_ID();)
END;

答案 1 :(得分:0)

Okey我设法完成了它。谢谢大家的帮助!

工作代码如下:

$query = <<<END
INSERT INTO users(username,pass,email,admin)
VALUES('{$username}','{$password}','{$email}','{$_POST['admin']}')
END;

if ($mysqli->query($query) === TRUE) {
    $last_id = $mysqli->insert_id;
} else {
    echo "Error: " . $query . "<br>" . $mysqli->error;
}

$q = <<<END
INSERT INTO usermeta(first_name,last_name, user_id)
VALUES('{$fname}','{$lname}','{$last_id}')
END;

if ($mysqli->query($q) !== TRUE) {
    die("Could not query database" . $mysqli->errno . " : " . $mysqli->error);
}