Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] przeszukiwanie tabeli
Marcel1989
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 9.05.2010

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


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 (IMG:style_emoticons/default/smile.gif) PS. Jeżeli jest jakieś lepsze rozwiązanie to jestem otwarty na sugestie (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


http://www.w3schools.com/php/php_mysql_where.asp
Go to the top of the page
+Quote Post
Marcel1989
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 9.05.2010

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


a coś po Polsku bo nie znam angielskiego
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


http://translate.google.pl/translate?js=y&...sl=en&tl=pl
Go to the top of the page
+Quote Post
Marcel1989
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 9.05.2010

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


  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 ?
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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()
Go to the top of the page
+Quote Post
croc
post
Post #7





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 04:52