O MySQL pode ajudá-lo a solucionar esses enormes erros de design de banco de dados com a função
FIND_IN_SET
. Dê uma chance a isso:SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
O que, obviamente, pode ser simplificado em:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Como a função retorna apenas
0
quando não há correspondência, mas pode ser mais difícil entender o que faz :)