Hola,
Si guardas las categorías a las que pertenecen separadas por comas, esa consulta no te funcionaría, porque por ejemplo 'accion,drama' no es igual a 'drama'. Lo puedes resolver con LIKE, algo así:
Código:
select * from peliculas where concat(',',categoria,',') like '%,$categoria,%' order by nombre asc
Para un buscador sería lo mismo. Si quieres dar la opción de seleccionar múltiples categorías, las únes por comas en la consulta tal como cuando las guardas (es decir, $categorías podría valer "accion,drama", cosa sencilla de lograr con un implode(), por ejemplo). Si quieres agregar otros términos de búsqueda simplemente los vas agregando antes del order by con and u or, según corresponda.
Saludos!