Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> IFNULL(), czyli dlaczego nie działa?
KMB
post 16.11.2005, 14:09:47
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.10.2005

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


Witam,
szukałem chyba wszędzie rozwiązania mojego problemu, ale nie znalazłem, dlatego kieruję swoje kroki tutaj.
mam select:
Kod
$result = mysql_query("select * from $nazwa_tabeli
    where
    Obszar = IFNULL('$Obszar', Obszar)") or die(mysql_error());

teoretycznie jeśli zmienna $Obszar nie jest ustawiona powinien powstać warunek zawsze spełniony:
Kod
Obszar=Obszar

i zapytanie powinno zwrócić wszystkie wiersze.
W moim przypadku nie są zwracane żadne wyniki.
Pytanie jest: dlaczego?
Próbowałem wykorzystać
Kod
Obszar = COALESCE('$Obszar', Obszar)

ale jest dokładnie to samo.
Zgłupiałem i prosze o pomoc.

Ten post edytował KMB 16.11.2005, 14:52:27
Go to the top of the page
+Quote Post
nospor
post 16.11.2005, 14:18:57
Post #2





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




na moj gust zjadles nawias )
  1. <?php
  2.  
  3. $result = mysql_query("select * from $nazwa_tabeli where Obszar = IFNULL('$Obszar', Obszar)") or die(mysql_error());
  4.  
  5. ?>


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

"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
KMB
post 16.11.2005, 14:20:44
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.10.2005

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


nawias zjadłem tylko przy kopiowaniu kodu
Go to the top of the page
+Quote Post
FiDO
post 16.11.2005, 17:49:19
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


IFNULL sprawdza czy wartosc jest rowna NULL, ale bazodanowy NULL.. a nie pusty string. W Twoim przypadku gdy zmienna $Obszar nie jest ustawiona to generuje sie takie zapytanie:
  1. SELECT *
  2. FROM tabelai WHERE Obszar = IFNULL('', Obszar)

Wiec nie ma co sie dziwic, ze nie dziala.. MySQL zachowal sie tutaj jak najbardziej poprawnie. Tak wiec musisz inaczej troche skonstruowac ten warunek (np. zwyklym IF'em - IF('$Obszar' == '', Obszar, '$Obszar')).


--------------------
Brak czasu :/
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: 13.06.2025 - 05:49