Witam
W ramach ćwiczeń Próbuję stworzyć skrypt w php, który zarejestruje nowego użytkownika. Niestety utknąłem na etapie dodania danych do bazy danych. Gdy próbuję dodać dane do bazy wyskakuje mi błąd :
Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number i nie mogę sobie z nim poradzić. Poniżej zamieszczam kod:
<?php
session_start();
if (isset($_POST['Login'])) {
$login = $_POST['Login'];
$email = $_POST['email'];
$pass = $_POST['password'];
$pass_2 = $_POST['password_2'];
$wszystko_ok = true;
//Sprawdzenie długości hasła
if (strlen($login) <3 || strlen($login) > 20) {
$wszystko_ok = false;
$_SESSION['e_login'] = "Podany login musi składać się od 3 do 20 znaków";
header('Location: ../index.php');
}
$wzór = '/[A-Z]/';
if(!preg_match($wzór, $pass)) {
$wszystko_ok = false;
$_SESSION['e_haslo'] = "Hasło musi zawierać przynajmniej 1 dużą litere";
header('Location: ../index.php');
}
if($pass != $pass_2) {
$wszystko_ok = false;
$_SESSION['e_haslo'] = "Podane hasła nie są identyczne";
header('Location: ../index.php');
}
$pass_hasz = password_hash($pass, PASSWORD_DEFAULT);
if(!isset($_POST['Regulamin'])) {
$udana_walidacja = false;
$_SESSION['e_regulamin'] = "Zaakceptuj regulamin";
header('Location: ../index.php');
}
require_once('../sql/databases.php');
$login_sql = $db->prepare('SELECT id FROM users WHERE login = :login');
$login_sql->bindValue(':login', $login, PDO::PARAM_STR);
$login_sql->execute();
if ($login_sql->rowCount() > 0) {
$wszystko_ok = false;
$_SESSION['e_login'] = "Podany login jest zajęty. Wybierz inny login";
header('Location: ../index.php');
}
$email_sql = $db->prepare('SELECT id FROM users WHERE email = :email');
$email_sql->bindValue(':email', $email, PDO::PARAM_STR);
$email_sql->execute();
if ($email_sql->rowCount() > 0) {
$wszystko_ok = false;
$_SESSION['e_email'] = "Podany email jest zajęty. Wybierz inny email";
header('Location: ../index.php');
}
if ($wszystko_ok == true) {
$kod = md5(rand());
$dodaj_do_bazy = $db->prepare("INSERT INTO users VALUES (:NULL, :login, :email, :pass, :key, :status)");
$dodaj_do_bazy->bindValue(':login', $login, PDO::PARAM_STR);
$dodaj_do_bazy->bindValue(':email', $email, PDO::PARAM_STR);
$dodaj_do_bazy->bindValue(':pass', $pass_hasz, PDO::PARAM_STR);
$dodaj_do_bazy->bindValue(':key', $kod, PDO::PARAM_STR);
$dodaj_do_bazy->bindValue(':status', 0, PDO::PARAM_STR);
$dodaj_do_bazy->execute();
}
}
Czy ktoś mógłby mi pomóc rozwiązać ten problem. Z góry dziękuje za pomoc