Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] LIKE a wielkość liter
busyboy
post 28.04.2017, 10:23:55
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 22.02.2004

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


Witam,

Mam zmienna :

Kod
$nazwa_produktu = str_replace(' ', '%', $_POST['nazwa_produktu']);


podstawiam pod zapytanie :

Kod
mysql_query("select * from towary where EAN like '%".$_POST['kod_ean']."%' and Nazwa like '%".$nazwa_produktu."%' order by Grupa asc");


W bazie jest nazwa towaru : Owoce Świata Pomelo 400ml12szt

jak wpisze w wyszukiwaniu na stronie Owoce Świa to dostaje wynik, jednak jak wpisze Owoce świa wyniku nie dostaję sad.gif

Jak rozwiązać ten problem ?
Go to the top of the page
+Quote Post
viking
post 28.04.2017, 10:30:51
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Wyszukiwanie po wielkości liter zależy od ustawionego COLLATE.


--------------------
Go to the top of the page
+Quote Post
busyboy
post 28.04.2017, 10:39:49
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 22.02.2004

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


Czyli trzeba to ustawić po stroni MySQL ? czy w zapytaniu ?
Go to the top of the page
+Quote Post
lukaskolista
post 28.04.2017, 10:55:21
Post #4





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


Poczytaj o wyszukiwaniu pełnotekstowym, lepsze już to niż taki like - wyniki będą beznadziejne i nic nie warte w przypadku dużej ilości danych, a samo zapytanie może zabić bazę.
Go to the top of the page
+Quote Post
viking
post 28.04.2017, 10:57:53
Post #5





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Cytat(busyboy @ 28.04.2017, 11:39:49 ) *
Czyli trzeba to ustawić po stroni MySQL ? czy w zapytaniu ?

Jak ustawisz po stronie mysql nie będziesz musiał w zapytaniu.
Mam nadzieję że to zapytanie nie jest publiczne? sql injection.


--------------------
Go to the top of the page
+Quote Post
busyboy
post 28.04.2017, 11:01:40
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 22.02.2004

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


Dziękuje za zainteresowanie temat - a po stronie mysql to gdzie tego szukać ?
Go to the top of the page
+Quote Post
viking
post 28.04.2017, 11:07:22
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


https://dev.mysql.com/doc/refman/5.7/en/create-table.html

Słowo klucz collate.


--------------------
Go to the top of the page
+Quote Post
czychacz
post 28.04.2017, 16:45:07
Post #8





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

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


COLLATE to jedno rozwiązanie, a drugie to ILIKE - porównuje bez względu na wielkość liter.
ale tak, jak @lukaskolista pisał - poczytaj o wyszukiwaniu pełnotekstowym
Go to the top of the page
+Quote Post
viking
post 28.04.2017, 16:52:09
Post #9





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Chyba pomyliłeś z postgresem wink.gif Tak słabo z ilike w mysql.


--------------------
Go to the top of the page
+Quote Post
woxala123
post 28.04.2017, 17:48:41
Post #10





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Poczytaj sobie ten przykład.
http://forum.php.pl/index.php?showtopic=253821
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: 18.04.2024 - 10:52