Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Dodałem kolumnę i rejestracja przestała działać
Forum PHP.pl > Forum > Przedszkole
Max Damage
tak wygląda moja tabela user:

  1. user_id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  2. nick varchar(16) NOT NULL,
  3. haslo char(30) NOT NULL,
  4. email varchar(100) NOT NULL

A tak rejestracja:
  1. <?php
  2. $nick=$_POST['nick'];
  3. $haslo=$_POST['haslo'];
  4. $haslo2=$_POST['haslo2'];
  5. $email=$_POST['email'];
  6.  
  7. require_once('prawidlowe_dane.php'); 
  8.  //sprawdzenie wypełnienia formularza
  9. if(!wypelniony($_POST))  {
  10. echo 'Formularz wypełnony nieprawidlowo - prosze wypelnic ponownie';
  11. exit;  }
  12. //sprawdzenie poprawnoœci haseł
  13. elseif($haslo!=$haslo2)  {
  14. echo 'Hasla nie pasuja do siebie';
  15. exit; }
  16.  //sprawdzenie dlugosci haseł
  17. elseif(strlen($haslo)<6)  {
  18.  echo 'Haslo musi miec co najmniej 6 znakow';
  19.  exit;  }
  20.  //sprawdzenie długoœci nazwy uzytkownika
  21. elseif(strlen($nick)>16)  {  
  22.  echo 'Nazwa uzytkownika nie moze miec wiecej niz 16 znakow';
  23.  exit; }
  24.  //sprawdzenie poprawnosci email
  25. elseif(!prawidlowy_email($email)){
  26. echo 'Adres email nieprawidlowy';
  27. exit;  }
  28.  //próba zarejestrowania
  29. //łšczenie z bazš danych
  30. $lacz=lacz_bd();
  31.  //sprawdzenie czy uzytkownika nie ma w bazie
  32.  $wynik=$lacz->query("select * from user where nick='$nick' and email='$email'");
  33.  if(!$wynik)
  34.  {
  35.  echo 'Wykonanie zapytania nie powiodlo sie';
  36.  exit;
  37.  } 
  38.  if($lacz->num_rows>0)
  39.  {  
  40.  echo 'Uzytkownik juz istnieje w naszej bazie';
  41.  exit;
  42.  }
  43. //jeœli wszystko ok wpisanie do bazy
  44. $wynik=$lacz->query("insert into user values ('$nick','$haslo', '$email')");
  45.  if(!wynik){
  46.  echo 'Operacja nie powiodla sie';
  47.  exit;}
  48. //rejestracja zmiennej sesji
  49. $_SESSION['uzyt']=$nick;
  50.  echo 'Rejestracja zakończyla sie sukcesem.';
  51. ?>

Teoretycznie wszystko działa jak należy. Nawet zapytanie odnośnie wprowadzenia danych do bazy. Tyle tylko, że gdy próbuję się zalogować lub patrzę w phpmyadmin czy jest to wprowadzone, tego nie ma. Przestało to działać gdy dodałem kolumnę user_id. Ktoś wie dlaczego i jak to naprawić?
Thea
Niezupełnie wszystko działa jak należy.
Twoja tabela posiada cztery kolumny, zaś w zapytaniu
INSERT INTO user VALUES ('$nick','$haslo','$email')
wypełniasz tylko trzy z nich. Jest to działanie jak najbardziej prawidłowe (w końcu user_id to kolumna z autonumeracją) ale pod jednym warunkiem:
Jeżeli nie definiujesz wszystkich wartości kolumn w takiej kolejności, w jakiej są w bazie, należy w zapytaniu podać kolumny, a potem wartości, które mają się w nich znaleźć.
Dlatego zapytanie powinno wyglądać tak:
INSERT INTO user(nick,haslo,email) VALUES ('$nick','$haslo','$email');

Poza tym, polecam manuale do SQL-a. Mnóstwo tego na sieci winksmiley.jpg
Max Damage
No faktycznie, zapomniałem minąć tej pierwszej kolumny. laugh.gif Ale już działa. Dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.