One of the tradeoffs this scheme makes is simplicity against database overhead, in the form of an extra query to get table descriptions. There are some environments where this won't fly. Those environments are characterized by being sufficiently database intensive that they have a separate database group responsible for physical layout and performance. If load on the DB is getting critical oversight, deploying a scheme that uses an extra table description query per CGI invocation will sooner or later get you a visit from the DB police.
Your example suggests that you're running your own MySQL, so you're probably O.K.