MySQL può aiutarti a risolvere questi enormi errori di progettazione del database con la funzione FIND_IN_SET
. Fai una prova:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Che ovviamente può essere semplificato in:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Poiché la funzione restituisce solo 0
quando non c'è corrispondenza, ma potrebbe essere più difficile capire cosa fa :)