Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Sprawdzanie istnienia maila
Matado
post
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 9.12.2008

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował Matado 31.08.2009, 14:37:40
Go to the top of the page
+Quote Post
kipero
post
Post #2





Grupa: Zarejestrowani
Postów: 233
Pomógł: 50
Dołączył: 28.10.2006
Skąd: Radom

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
nitek
post
Post #3





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

Ostrzeżenie: (0%)
-----


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...


--------------------
Go to the top of the page
+Quote Post
Matado
post
Post #4





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 9.12.2008

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował Matado 31.08.2009, 15:07:41
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 08:02