繁体   English   中英

插入两个不同的数据库表

[英]Inserting into two different database tables

我有一个表单,可以将用户从表单输入的内容插入数据库,我想将电子邮件存储在单独的表中给用户。

所以我想要一个帐户表中的电子邮件,然后是用户表中的用户名和密码。 对于任何想知道原因的人来说,我想要构建的应用程序将允许用户在死后创建一个新用户,但可以将内容存储在将被结转的帐户中。

我尝试使用多个相同的代码,但代码太多并迷失在其中。 必须有一种比多次复制拉伸代码更简单的方法。

$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.");

如果您希望在单独的表中插入单独的数据,我建议您只使用 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM