• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

System rejestracji użytkownika w php - SQLSTATE[HY093]: Invalid parameter number

0 głosów
143 wizyt
pytanie zadane 24 listopada w PHP przez mn130496 Gaduła (3,570 p.)

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

1 odpowiedź

+1 głos
odpowiedź 24 listopada przez Mirosław Zelent Nałogowiec (35,030 p.)

Tak na pierwszy rzut oka w kwerendzie jest 

:NULL

Domyślam się, że ta kolumna ma AUTO_INCREMENT i jest kluczem primary usera - wówczas daj NULL bez dwukropka

komentarz 26 listopada przez mn130496 Gaduła (3,570 p.)
Dziękuje bardzo za pomoc, Już wszystko działa
komentarz 27 listopada przez Mirosław Zelent Nałogowiec (35,030 p.)
Luzik, fajnie że mogłem co nieco pomóc. Pozdrawiam serdecznie!

Podobne pytania

+1 głos
0 odpowiedzi 401 wizyt
0 głosów
0 odpowiedzi 170 wizyt
pytanie zadane 29 listopada 2019 w PHP przez Filipczak Gaduła (4,080 p.)
0 głosów
2 odpowiedzi 293 wizyt
pytanie zadane 12 września 2024 w Offtop przez annad Nowicjusz (120 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2416p. - dia-Chann
  2. 2390p. - DziarnowskiJ
  3. 2317p. - raydeal
  4. 2300p. - Adrian Wieprzkowicz
  5. 2243p. - rucin93
  6. 2242p. - Łukasz Piwowar
  7. 2222p. - CC PL
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1377p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...