Jeśli chodzi o stałe - to właśnie tak to działa

Ze stałymi wszystko jest ok są znajdowane.
W innych zapytaniach działa tak jak trzeba.
Stała id nie jest id tabeli z indeksem PRIMARY.
Chodzi tutaj o podopwiedź odnośnie składni.
Chcę skasować wszystkie wpisy które mają ID np. 20 i CAT inny niż podany w ciągu czyli 1,2,3,4,5 używając NOT IN ()
lub czegoś innego co spowoduje że moje zapytanie zacznie robić z wpisami to co chcę

Dobra już nie trzeba

Naprawiłem.
Stary:
$cat_list = '1,2,3,4,5';
$todo = mysql_query("DELETE FROM ".TABELA
." WHERE ".ID
." = '$id' AND ".CAT
." NOT IN ('$cat_list')", $link);
Nowy:
$cat_list = '1,2,3,4,5';
$todo = mysql_query("DELETE FROM ".TABELA
." WHERE ".ID
." = '$id' AND ".CAT
." NOT IN (".$cat_list.")", $link);
W jakiś dziwny sposób PHP ładowało do zapytania cudzysłów i mimo że teoretycznie oba zapisy powinny prowadzić do jednego rozwiązania to tak nie było.
Może komuś się to przyda a jeśli nie, to można zamknąć, zarchiwizować, wyrzucić ...

Cytat(piotrala @ 25.05.2012, 23:42:19 )

A czemu w ogóle dajesz te cudzysłowy i kropki wokół słów
TABELA,
ID,
CAT?
Domyślam się, że PHP traktuje to wtedy jako nazwy stałych (których nie znajduje), a nie widzę powodu, dla którego nazwy pól w tabeli miałbym zapisywać w stałych

Chociażby dlatego że można zrobić prosty komponent jak newsy. Później go udoskonalać i przeszczepiać do innej strony. Wystarczy wtedy zmienić wartość stałej w jednym pliku aby zastosowało to się w całym komponencie. Wydaje mi się że to wystarczający powód

tym bardziej że małe strony z takimi komponentami można trzymać w jednej bazie danych