Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: IFNULL()
Forum PHP.pl > Forum > Bazy danych > MySQL
KMB
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.
nospor
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. ?>
KMB
nawias zjadłem tylko przy kopiowaniu kodu
FiDO
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')).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.