En realidad, ese tipo de scripts son PHP, no es tema de MySQL, y no es conveniente andar borrando dinámicamente tablas, porque
las estructuras de base de datos deben ser fijas.
Permitir que un usuario tenga privilegios suficientes como para borrar tablas es una muy mala práctica, una
pésima práctica. De hecho, ni siquiera debería tener el privilegio para crearlos.
Hay otro problema adicional, y es que si esas tablas son usadas temporalmente (como indica su nombre) para procesar datos en una sesión de usuario, el sólo crearlas te producirán problemas severos si en algún momento el mismo proceso es usado por dos o más usuarios que actúen concurrentemente. En tales casos ni siquiera puedes borrarlas, porque si otro usuario también las necesita
harás colapsar el proceso en curso.
Resumiendo:
1) No uses tablas temporales creadas en forma fija.
2) No destruyas tablas si tienes usuarios concurrentes.
3) No permitas que los usuarios tengan privilegios de DROP TABLE, bajo ninguna circunstancia.
Ahora bien, el hecho de que no convenga o no deban tener esos privilegios
no implica que no se puedan usar cierto tipo de tablas para crear procesos temporales. El error consiste en crear el tipo de tablas
fijas como temporales. Lo que debes hacer es crear tablas de tipo TEMPORARY.
Las tablas TEMPORARY se crean dentro de la sesión abierta por el usuario
en MySQL (no en PHP), y existen mientras esa conexión siga abierta. Tienen la ventaja de que como sólo existen en la sesión de MySQL que las crea, diferentes sesiones de diferentes usuarios pueden usar al mismo nombre de tabla sin crear conflictos, porque la tabla de una sesión es invisible e inaccesible para otra sesión, aunque la sesión sea del mismo usuario y con el mismo password.
La ventaja principal para tu caso es que una tabla TEMPORARY se borra sola, en el mismo momento en que la sesió se cierra. Esto trae un sólo problema: La conexión debe ser buena, porque si una sesión se cae en el medio del proceso, las tablas creadas desaparecerán instantáneamente. De todos modos, las ventajas de usar este tipo de tablas superan ampliamente el riesgo de caida de conexiones.
Para crear una tabla TEMPORARY sólo debes incluir la cláusula TEMPORARY en el CREATE TABLE y si quieres borrarla directamente, también en el DROP, ya que puedes crear una tabla TEMPORARY con el mismo nombre que existe entre las fijas:
En definitiva: Cambia el tipo de tablas por TEMPORARY y olvidate del borrado.