提问者:小点点

不会插入数据库


<?php

if (isset($_POST['registracija'])){

        require  'conn.php';
        global $conn;

        $name = $_POST['vards'];
        $surname = $_POST['uzvards'];
        $email = $_POST['epasts'];
        $password = $_POST['parole1'];
        $repeatpassword = $_POST['parole2'];
        $statuss = 'Nav';
        $school = 'Nav';
        $clas = 'Nav';   

        if ( $password !== $repeatpassword ){
            header ('location: /register.php?match=false ');
        }elseif(strlen($password) <= 7 && strlen($repeatpassword) <= 7){
            header ('location: /register.php?length=false');
        }else {
            $sql = "SELECT E_PASTS FROM user_acounts WHERE E_PASTS=?";
            $stmt = mysqli_stmt_init($conn);

            if (!mysqli_stmt_prepare($stmt, $sql)) {
                header("Location: /register.php?error=sqlerror");
                exit();
            } else {
                mysqli_stmt_bind_param($stmt, "s", $email);
                mysqli_stmt_execute($stmt);
                mysqli_stmt_store_result($stmt);
                $result = mysqli_stmt_num_rows($stmt);
                if ($result > 0) {
                    header("Location: register.php?emailexist=true");
                    exit();
            }else{  
                $sql = "INSERT INTO user_acounts (vards,uzvards,e_pasts,parole,statuss,skola,klase) VALUES (?,?,?,?,?,?,?)"; 
                $stmt = mysqli_stmt_init($conn);

                if (!mysqli_stmt_prepare($stmt, $sql)) {
                    header("Location: /register.php?error=sqlerror");
                    exit();
                } else {
                    $hashedPassword = password_hash($password, PASSWORD_DEFAULT);

                    mysqli_stmt_bind_param($stmt, 'sssssss', $name, $surname, $email, $hashedPassword, $statuss, $school, $clas); // Inserts into database variables
                    mysqli_stmt_execute($stmt); // Execute $stmt

                    header("Location: /login.php?register=success");
                    exit();
                }
            }
        }
    }
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
}

这是我的项目的register.php文件,所以我想插入数据库,但它不会这样做,它会说它注册成功。

有人能帮我解决这个问题吗?


共1个答案

匿名用户

由于将$stmt作为mysqli_stmt_init()函数(是一个对象)的结果传递,因此将得到以下错误:

PHP致命错误:只能通过引用传递变量。。。

你应该准备声明:

$stmt = mysqli_prepare($conn, $sql);

那么您的bin参数语句应该可以工作。