<?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文件,所以我想插入数据库,但它不会这样做,它会说它注册成功。
有人能帮我解决这个问题吗?
由于将$stmt
作为mysqli_stmt_init()
函数(是一个对象)的结果传递,因此将得到以下错误:
PHP致命错误:只能通过引用传递变量。。。
你应该准备声明:
$stmt = mysqli_prepare($conn, $sql);
那么您的bin参数语句应该可以工作。