Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Dziwne zapytanie
Compiler
post 11.11.2009, 18:09:00
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 11.11.2006

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


Witam,
Otóż dostałem od kolegi kod, który mu nie działa.
Wyszło, że zapytanie nie zwraca wyniku i oto one:
  1. SELECT * FROM `e_user` WHERE `user_class` LIKE '%,".$r[grupa]."%' COLLATE latin2_general_ci


Pytanie jest ok tylko nie rozumiem co to : '%,".$r[grupa]."%' questionmark.gif
Go to the top of the page
+Quote Post
Cysiaczek
post 11.11.2009, 18:10:55
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Zapewne powinno wyglądać to tak:

  1. $sql="SELECT * FROM `e_user` WHERE `user_class` LIKE '%,".$r['grupa']."%' COLLATE latin2_general_ci";


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Compiler
post 11.11.2009, 18:24:19
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 11.11.2006

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


Pytanie jest dobre.
Nie wiem tylko co znaczy '%,".$r['grupa']."%' questionmark.gif
Go to the top of the page
+Quote Post
Brick
post 11.11.2009, 18:26:24
Post #4





Grupa: Zarejestrowani
Postów: 107
Pomógł: 9
Dołączył: 16.02.2004
Skąd: Kraków

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


LIKE %piwo% oznacza: znajdź frazę "piwo" w podanym polu w tabeli, bez względu na to czy występuje na początku, na końcu czy w środku ciągu znaków.

W podanym przypadku zamiast "piwo" jest zapewne wynik jakiegoś innego zapytania: $r['grupa'].
Dodatkowo przed słowem jest wstawiony przecinek czyli MySQL zwróci wszystkie wyniki które mają w tekście poszukiwane słowo ale z przecinkiem na początku. Myślę że ten przecinek jest niepotrzebny i zapytanie powinno być takie:
  1. SELECT * FROM `e_user` WHERE `user_class` LIKE '%".$r['grupa']."%' COLLATE latin2_general_ci


W związku z tym że do zapytania jest wstawiony element tablicy $r['grupa'] to wstawienie go do kodu wymagało dodania kropek.
Dla czytelności kodu można to zrobić tak:
$zmienna = $r['grupa'];
  1. SELECT * FROM `e_user` WHERE `user_class` LIKE '%$zmienna%' COLLATE latin2_general_ci


Ten post edytował Brick 11.11.2009, 18:29:20


--------------------
Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein
Go to the top of the page
+Quote Post
Compiler
post 11.11.2009, 18:34:19
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 11.11.2006

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


Wielkie dzięki smile.gif
Sprawdzę, czy pomoże.
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 Wersja Lo-Fi Aktualny czas: 26.04.2024 - 08:16