MySQL може да ви помогне да заобиколите тези огромни грешки в дизайна на база данни с функция FIND_IN_SET
. Опитайте това:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Което разбира се може да бъде опростено до:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Тъй като функцията връща само 0
когато няма съвпадение, но може да е по-трудно да се разбере какво прави :)