Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zapytanie CONCAT nie działa
szczalpi
post
Post #1





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Witam
Chcę użyć zapyatania do w mysql za pomocą CONCAT, niestety nie działa.
Nie wiem gdzie tkwi problem proszę o pomoc. Pozdrawiam
  1. SELECT * FROM users WHERE CONCAT(miasto, rodzaj_obiektu) LIKE '%".$pokaz."%'
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
Lysiur
post
Post #2





Grupa: Zarejestrowani
Postów: 66
Pomógł: 11
Dołączył: 25.07.2012

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


składnia wygląda na poprawną, więc sprawdź lepiej, czy zmienna $pokaz zawiera to co powinna.
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


A któreś z pól nie jest Null?
Go to the top of the page
+Quote Post
szczalpi
post
Post #4





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Zapytanie działa tylko jest małe ale.
Nie znajduje całego wyrazu np: wpiszę poznań nie znajduje, wpiszę oznań i znajduje ?!
Nie wiem jak zrobić poprawnie like $pokaz
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bo może w bazie masz Poznań a nie poznań...
Go to the top of the page
+Quote Post
mar1aczi
post
Post #6





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


Małe i duże literki mają znaczenie.
Go to the top of the page
+Quote Post
szczalpi
post
Post #7





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Tak. Mam duże i małe litery.
To w jaki sposób można zadać pytanie, aby dobrze szukało (IMG:style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




mysql -> lower
Go to the top of the page
+Quote Post
matiit
post
Post #9





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Tylko najlepiej coś takiego:
  1. $pokaz = strtolower($pokaz);
  2. SELECT * FROM users WHERE CONCAT(LOWER(miasto), LOWER(rodzaj_obiektu)) LIKE '%".$pokaz."%'


Te 2 LOWER można złączyć w jeden...

Najlepiej jak obie części zapytania bedą sprowadzone do małych literek.
Problem będzie z wydajnością tego i... nie pamiętam jak jest z polskimi znakami w tym.

widziałem kiedyś lepsze rozwiązanie do tego. Poszukaj, to popularny problem.

Ten post edytował matiit 10.04.2013, 12:56:56
Go to the top of the page
+Quote Post
szczalpi
post
Post #10





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


  1. SELECT miasto,LOWER(miasto),tresc,LOWER(tresc) FROM kamery WHERE CONCAT(nr,miasto,tresc) LIKE '%$kamery%' ";

Takie zapytanie mam, ale nic to nie daje (IMG:style_emoticons/default/sad.gif) .
Chcęaby znalazło, np: Rynek Poznań to nie znajduje, ynek już tak. Nie wiem czy CONCAT jest dobrym zapytaniem do łączenia kolumn ?
Go to the top of the page
+Quote Post
viking
post
Post #11





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Najlepiej ustawić COLLATE czyli zapytanie może wylądać .... LIKE cos COLLATE utf8_general_ci

"ci" oznacza case insensitive
"cs" case sensitive
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




WHERE CONCAT(nr,miasto,tresc)
Przecież nadal szukasz nie zmieniając na małe.... Owszem zmieniasz w SELECT, ale SELECT z WHERE nie ma nic wspólnego....szukasz w WHERE a nie w SELECT
Go to the top of the page
+Quote Post
szczalpi
post
Post #13





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Mam takie ostateczne zapytanie:
  1. $sql="SELECT * FROM kamery WHERE CONCAT(LOWER(miasto), LOWER(tresc)) LIKE '%".$kamery."%' ";

PRZYKŁAD:
- stary rynek znajduje
- stary lub rynek znajduje
- start rynek poznań lub stary poznań juz nie znajduje
Jak połączyć dwie kolumny, aby pokazywał wynik ?


Nic to nie daje

Ten post edytował szczalpi 10.04.2013, 14:51:05
Go to the top of the page
+Quote Post
matiit
post
Post #14





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Dołącz spację pomiędzy miasto i treść. Bo chyba o to chodzi.
Go to the top of the page
+Quote Post
szczalpi
post
Post #15





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Nic to nie daje (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
matiit
post
Post #16





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


  1. $sql="SELECT * FROM kamery WHERE CONCAT(CONCAT(LOWER(miasto), ' '), LOWER(tresc)) LIKE '%".$kamery."%' ";


Chodziło mi o takie coś.
Wiem, że brzydko (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
szczalpi
post
Post #17





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Nie działa.
  1. $sql="SELECT * FROM kamery WHERE CONCAT(CONCAT(LOWER(miasto), ' '), LOWER(tresc)) LIKE '%".$kamery."%' ";

Tak samo jak wyzej nie znajduje stary rynek poznan reszta ok.
Go to the top of the page
+Quote Post
matiit
post
Post #18





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


hehe ok. Nie znajduje bo się kolejność nie zgadza...
Porównujesz "poznan stary rynek" do "%stary rynek poznan%" no i oczywiscie to jest false.
Rozwiązanie:

  1. $sql="SELECT * FROM kamery WHERE CONCAT(CONCAT(LOWER(miasto), ' '), LOWER(tresc)) LIKE '%".$kamery."%' OR CONCAT(CONCAT(LOWER(tresc), ' '), LOWER(miasto)) LIKE '%".$kamery."%' "


Oczywiście mozna to napisać ładniej i trochę przyspieszyć.

Ten post edytował matiit 10.04.2013, 15:27:08
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: 25.08.2025 - 04:49