Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Rejestracja PHP/PDO
Forum PHP.pl > Forum > Przedszkole
jarek998
Witajcie

Mam problem dotyczący rejestrowania konta z obsługą PDO.

  1. $zapytanie1 = $db->query("SELECT COUNT(*) AS ok FROM uzytkownicy WHERE nick='".$_POST['nick']."' OR email='".$_POST['email']."'");
  2.  
  3.  
  4. if($zapytanie1->rowCount() > 0){
  5.  
  6. $sprawdz = $zapytanie1->fetch();
  7.  
  8. echo "<script type='text/javascript'>window.alert('Taki gracz już istnieje')</script>";


Ten kawałek kodu ma za zadanie sprawdzenie czy dany nick lub email nie jest już używany przez innego gracza. Po naciśnięciu "Rejestruj" cały czas się pojawia "Taki gracz istnieje"

Z góry dziękuję za pomoc smile.gif
nospor
Poniewaz Twoje zapytanie zwraca zawsze jeden rekord. A ten rekord zawiera dopiero szukaną liczbę rekordów...
jarek998
Obecnie jestem na etapie uczenia się zastosowania PDO w praktyce więc nie bardzo rozumiem ;x

Może byś pomógł ?

Tzn. Nie chodzi mi o to żebyś za mnie napisać kod, tylko żebyś mnie naprowadził . wink.gif

Turson
SELECT COUNT(*) zwraca zawsze jeden rekord, a jego wartośc to np. 0 albo 2152929238
Więc albo robisz SELECT * a do tego rowCount() albo fetch() dla count
viking
Inna sprawa że jak już stosujesz PDO to przy okazji zabezpiecz zapytania. Teraz masz SQL Injection.
jarek998
Chodzi o funkcje prepare a potem bindValue?

PS. Zastosowałem SELECT * i działa poprawnie dzięki .
Turson
Tak
jarek998
  1. $zapytanie1 = $db->prepare("SELECT * FROM uzytkownicy WHERE nick=:nick OR email=:email");
  2.  
  3. $zapytanie1->bindValue(':nick', $_POST['nick'], PDO::PARAM_STR);
  4.  
  5. $zapytanie1->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
  6.  
  7. $zapytanie1->execute();


Czy to jest dobrze napisane, teraz jest zabezpieczone przed SQL Injection ?

Czy może mam jakiś błąd?
Turson
specool.gif
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.