Я не могу подключиться к базе данных MySQL - PullRequest
0 голосов
/ 22 сентября 2019

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

Но проблема в том, что я не могу подключиться к базе данных, так как массив ошибок содержит одну или несколько ошибок.

$errors=array();
$username="";
$email="";


if(isset($_POST['signup-btn'])){
$username=$_POST['username'];
$email=$_POST['email'];
$password=$_POST['password'];
$passwordConf=$_POST['passwordConf'];


if(empty($username)){
    $errors['username']="Username required";
}

if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
    $errors['email']="Email address is invalid!";
}



if(empty($email)){
    $errors['email']="Email required";
}
if(empty($password)){
    $errors['password']="Password required";
}

if($password !== $passwordConf){
     $errors['password']="The two passwords do not match";
}

$emailQuery = "select * from users where email=? limit 1";
$stmt = $conn->prepare($emailQuery);
$stmt->bind_param('s',$email);
$stmt->execute();
$result=$stmt->get_result();
$userCount=$result->num_rows;
$stmt->close();

if($userCount > 0){
    $errors['email'] = "Email already exists";
}


if(count($errors)===0){
   $password = password_hash($password, PASSWORD_DEFAULT);
   $token = bin2hex(random_bytes(50));
   $verified = false;

   $sql =  "insert into 
users(username,email,verified,token,password)values(?,?,?,?,?)";
   $stmt = $conn->prepare($sql);
   $stmt- 
    >bind_param('ssbss',$username,$email,$verified,$token,$password);
   if($stmt->execute()){

    $user_id = $conn->insert_id;
    $SESSION['id']= $user_id;
    $SESSION['username']=$username;
    $SESSION['email']=$email;
    $SESSION['verified']=$verified;

    $_SESSION['message']="You are now logged in!";
    $_SESSION['alert-class']="alert-success";
    header('location:index.php');
    exit();

   }
   else{
    $errors['db_error'] = "Database error: failed to register";
   }
}

Я ожидаю, что данные будут отправлены в базу данных mysql и сохранены после правильной проверки полей

...