Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Sprawdzanie istnienia maila
Forum PHP.pl > Forum > Przedszkole
Matado
Napisałem metodę do sprawdzania, czy wpisany do formularza mail istnieje w bazie czy nie. Wszystko jest ok, gdy adres istnieje, wtedy wyświetla "This email address exists." . Ale kiedy wpisanego maila nie ma w bazie, powinno wyświetlić "It does not exist.", ale zamiast tekstu wyświetla mi się puste okno. Co jest źle, że nie wyświetla tekstu.?

  1. public function email_exists($email)
  2. {
  3. $stmt= $this->pdo->prepare ('SELECT email FROM users WHERE email=:email LIMIT 1');
  4. $stmt-> bindValue (':email', $_POST['email'], PDO::PARAM_STR);
  5. $stmt-> execute();
  6.  
  7. while ($row= $stmt-> fetch())
  8. {
  9. if ($row['email'] == $email)
  10. {
  11. $this-> message= 'This email address exists.';
  12. }
  13. else
  14. {
  15. $this-> message= 'It does not exist';
  16. }
  17. }
  18. $stmt-> closeCursor();
  19. }
kipero
Jeśli zapytanie nie pobierze żadnego rekordu, to pętla while nie wykona się ani razu, więc zmiennej $this-> message nie zostanie przypisana żadna wartość. Tę pętlę można w ogóle usunąć, a zamiast tego sprawdzić czy ilość pobranych rekordów jest większa od 0.
nitek
jeżeli warunek pętli while jest niespełniony, nie wykona się ona ani razu.. dlatego... smile.gif
jeśli żaden mail nie został wyciągnięty, nie ma wyników - nie ma pętli...

daj zmienną sterującą, zwiększaj ją w pętli, a za pętlą (po), daj sprawdzanie, czy zmienna wzrosła...
Matado
Ok. rozwiązałem to tak. Pętlę wywaliłem, dałem warunek, jeśli jest większe od 0 istnieje i else, jeśli nie . Wszystko jest ok teraz. Dzięki za pomoc.

  1. public function email_exists($email)
  2. {
  3. $stmt= $this->pdo->prepare ('SELECT email FROM users WHERE email=:email');
  4. $stmt-> bindValue (':email', $_POST['email'], PDO::PARAM_STR);
  5. $stmt-> execute();
  6.  
  7. if ($stmt-> fetch() > 0)
  8. {
  9. $this-> message= 'This email address exists.';
  10. }
  11. else
  12. {
  13. $this-> message= 'It does not exist';
  14. }
  15.  
  16. $stmt-> closeCursor();
  17. }
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.