Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zapytanie w którym zmienna może przyjąć dowolną wartość
lkjhgf345
post 1.01.2017, 17:25:09
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 21.12.2016

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


Witam
Załóżmy że mam krótki formularz z którego wybieram parametry które mają filtrować dane pobierane z bazy np. kolor roweru wybieram z dropdown list i potem w klauzurze zaznaczam
  1. SELECT * FROM bikes WHERE kolor = '$kolor'
. Czy można w mysql zbudować takie zapytanie w którym wartość tej zmiennej kolor może przyjąć dowolną wartość? Czy może trzeba w takim przypadku budować takie zapytanie gdzie się po prostu pomija ten warunek?
Z góry Dziękuje i Pozdrawiam w Nowym Roku
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
viking
post 1.01.2017, 18:51:11
Post #2





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

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


Możesz użyć where kolor like '%' ale to oczywiście nie ma sensu większego. Po prostu pomijasz kolumnę jeśli nie chcesz po niej ograniczać. Swoją drogą używaj bindowania
  1. SELECT * FROM bikes WHERE kolor = ?


--------------------
Go to the top of the page
+Quote Post
mmmmmmm
post 1.01.2017, 20:58:21
Post #3





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

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


Przyjmując że $kolor zamiast 'niebieski' jest NULL, możesz użyć:
WHERE kolor=Coalesce($kolor, kolor)
Go to the top of the page
+Quote Post
nospor
post 1.01.2017, 21:57:11
Post #4





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




@mmmmmmmm ale wiesz ze Coalesce(niebieski, kolor) pluje bledem? wink.gif

@autor jak juz wspomnial viking poprostu nie dodawaj do zapytania pol, po ktorych nie chcesz ograniczac.
Tutaj opisalem jak sie buduje takie dynamiczne zapytania
http://nospor.pl/wyszukiwarka-zapytanie-za...d-warunkow.html


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mmmmmmm
post 2.01.2017, 09:28:19
Post #5





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

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


@nospor, ale wiesz, że zapytanie jest
WHERE kolor=Coalesce('niebieski', kolor)
?
Go to the top of the page
+Quote Post
nospor
post 2.01.2017, 11:13:39
Post #6





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




@mmmmmm oczywiscie ze wiem
tylko widzisz, ty nie napisales
Coalesce('$kolor', kolor)

Ty napisales
Coalesce($kolor, kolor)

Przez co otrzymasz
Coalesce(niebieski, kolor)

Nigdzie nie napisales, ze zmienna $kolor ma byc budowana tak
$kolor = "'niebieski'";

wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lkjhgf345
post 2.01.2017, 12:40:09
Post #7





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 21.12.2016

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


To w takim razie pozostaje mi zapoznanie się z artykułem i próbowanie po swojemu.
Dziękuje za odzew.
Go to the top of the page
+Quote Post
mmmmmmm
post 2.01.2017, 20:57:34
Post #8





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

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


Cytat
Przyjmując że $kolor zamiast 'niebieski' jest NULL, możesz użyć:
Go to the top of the page
+Quote Post
nospor
post 2.01.2017, 22:46:41
Post #9





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




@mmmmmmm widzialem to. Ale nie wiem czy wiesz, ale postem nie ida dane w apostrofach. To ze sobie cos zalozyles w zaden sposob nie sprawi, ze w magiczny sposob sie tam one pojawia wink.gif
No chyba ze wlozyc je recznie, mozna, oczywiscie, ale mimo wszystko wypadaloby o tym wspomniec, bo nasz autor tak troszke poczatkujacy wink.gif

Poza tym proponowane przez Ciebie rozwiazanie osobiscie uwazam za zle. Tego typu rzeczy robi sie przez dynamiczne budowanie warunkow zapytania w zaleznosci od danych jakie szukamy, a nie wkladanie do zapytania wszystkiego, nawet pusstych danych


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 14.08.2025 - 06:09