Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] przeszukiwanie tabeli
Forum PHP.pl > Forum > Przedszkole
Marcel1989
Witam, jest jakaś komenda na przeszukiwanie tabeli w poszukiwaniu konkretnego rekordu np chce sprawdzić czy Taki login już istnieje więc chce stworzyć taki rekord który to sprawdzi smile.gif PS. Jeżeli jest jakieś lepsze rozwiązanie to jestem otwarty na sugestie smile.gif Ja chce to zrobić na zasadzie przyrównania wyniku z bazy do $_POSt['xxx'] zmiennej a no i pytanie czy takie zapytanie może być utworzone jedno dla wszystkich pól abym nie musiał do każdego pola tworzyć osobnego To powinna być pętla czy coś innego questionmark.gif?
Marcel1989
a coś po Polsku bo nie znam angielskiego
Marcel1989
  1. <?php
  2.  
  3. include_once('cfg.php');
  4.  
  5. $result = mysql_query ("SELECT login FROM user WHERE login='".$_POST['login']."'");
  6. if($_POST['login'] == $result)
  7. {
  8. echo "Dziala";
  9. if($_GET['step'] == "newacount") {
  10.  
  11. $zapytanie = "INSERT INTO `user` (`id`, `login`, `password`, `e-mail`, `avatar`) VALUES ('', '".$_POST['login']."', '".md5($_POST['password'])."', '".$_POST['e-mail']."', '')" ;
  12. $idzapytania = mysql_query($zapytanie);
  13.  
  14. }
  15.  
  16. }
  17. else {
  18.  
  19. echo"a wypierdalaj";
  20.  
  21. }
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. ?>
  29.  


Co to robię źle ?
tehaha
widzę, że krucho z podstawami...
w linijce 6, stworzyłeś zapytanie, które pobiera wszystkie rekordy, gdzie login = $_POST['login'], więc potem chcesz sprawdzić czy został zwrócony jakikolwiek rekord, bo jeżeli tak to login jest zajęty
  1. $result = mysql_query ("SELECT login FROM user WHERE login='".$_POST['login']."'");
  2.  
  3. if(mysql_num_rows($result) > 0)
  4. {
  5. echo "ten login jest zajęty";
  6. } else
  7. {
  8. //utwórz nowe konto użytkownika
  9. }


tak na marginesie
- zanim wsadzisz do zapytania dane pochodzące z formularza, koniecznie użyj funkcji mysql_real_escape_string();
- sama funkcja mysql_query() wysyła zapytanie do bazy, aby odebrać zwrócone rekordy musisz jeszcze użyć funkcji mysql_fetch_array()
croc
Ja nie do końca rozumiem co chcesz osiągnąć, ale żeby wyszukać użytkownika o danym loginie możesz zrobić np. tak:
  1. $zapytanie = mysql_query('SELECT 1 FROM user WHERE login = \'' . mysql_real_escape_string($_POST['login']) . '\'');
  2. $liczba = mysql_num_rows($zapytanie);

Zmienna $liczba będzie zawierała liczbę znalezionych rekordów, więc odpalasz akcję jeśli $liczba === 1 czy tam $liczba > 0, jak wolisz (ja wolę to pierwsze).

Można też wybierać od razu liczbę, tj.
  1. $zapytanie = mysql_query('SELECT count(1) AS liczba FROM user WHERE login = \'' . mysql_real_escape_string($_POST['login']) . '\'');
  2. $wynik = mysql_fetch_assoc($zapytanie);

I tu masz liczbę rekordów w $wynik['liczba']. To drugie jest mniej czytelne, ale szybsze.
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.