tak chodzi o to żebyś posklejał zapytanie i go potem użył.
Też się kiedyś spotkałem z tym problemem co opisujesz. Możesz to zrobić na dwa sposoby. Jeden jest dość skomplikowany bo wymaga od ciebie szeregu instrukcji warunkowych które uwzględnią wszystkie możliwe przypadki.
drugi sposób jest taki
Kod
...
if($zmienna1 != '') { $sql .= "cos LIKE '%cos%' AND "; }
if($zmienna2 != '') { $sql .= "cos2 LIKE '%cos2%' AND "; }
$sql .= "jakies_pole != ''"; // może tu też być np: $sql .= "jakies_pole LIKE '$''$'";
może to nie jest zbyt eleganckie i nie powinno się tak robić, ale ja tak rozwiązałem ten problem kiedyś przy czymś tam pracując. Ogólnie rzecz polega na tym, że dajesz jakiś absurdalny warunek który będzie spełniony zawsze. Np. pole z identyfikatorem różne od pustego ciągu znaków. W ten sposób zamykasz zapytanie i nie zostaje ci to brzydkie AND na końcu

wydajności to nie obniża w żaden dostrzegalny dla przeciętnego śmiertelnika sposób. Kodu AŻ tak bardzo nie bruździ a spełnia swoje zadanie

mam nadzieje, że nikt się nie zgorszy tym może trochę mało wyrafinowanym sposobem....on po prostu spełnia swoją rolę i nikomu nie wadzi