Creating new tables dynamically isn't the right approach. You can do this by storing all the data in 5-6 tables.
You will need one table to keep track of the category names.
One to store product names. (For example, HP Laserjet 5m)
One to keep track of the attributes connected with each category.
One to keep track of the individual pieces of hardware and map them to category types.
You might want one to store product descriptions (so that you don't need to enter the DPI, weight, RAM size and dimensions for a HP laserjet 5m printer over and over again).
One to keep a list of options for select fields. (for example, if a printer is to fall into one of 3 types (laser, ink jet, or dot matrix), you don't want the user to type the name because then it's not searchable since some people will type "lazer". So imagine that attribute 17 describes printer types. In the attribute_options table, you would have these three rows: 17,"laser" and 17,"ink jet" and 17,"dot matrix". This way, when the web form displays and sees that printers include attribute 17, and attribute 17 is a select field, it knows to look in the attribute_options table to find the possible options and it makes the appropriate drop down menu.
And finally, you'll need one table to actually store the data for each piece of hardware. For example, assume that Bob and Sue are issued identical HP laserjet 5M printers. You will need to add two new items to the items table. Once you select that they are "printers", you will show a list of printer types. The user will select "HP Laserjet 5m" so that the system already knows DPI, weight, .RAM size, etc). Then the user will see the fields that are appropriate for a printer (where it's kept in the building, serial number, when it was purchased). If it had been a server, then a different list of questions would have been displayed (depending on what you put in the category_attributes_xref table for servers). For example, if all the HP 5M's that you buy are "Laser printers", then there's no need to store they type "Laser Printer" for each bob and sue's printer. But if each Dell server you buy has a different sized hard drive or RAM size, or video card, then you will need to store that data on a per item basis instead of a per product basis.
Does this all seem hard? Yes. Here's the payoff: (1) It's scaleable. It doesn't matter how many products or how many categories you have... you write it once and you never need to work at the database level again. All your tables are created and optimized and you don't need to deal with the optimization headaches that come with having tons of tables that you didn't even create. (2) You write one insert statement and one select statement and it works for every product and every category that exists now and in the future. If you have the system creating new tables for you, then you will spend years maintaining this boondoggle. And worse, when you quit because you just can't face going to work to deal with the nightmare that you've created, the new guy who has to maintain it will say nasty things about you as they build a new system from scratch.
Is my way harder and more complicated? Yes. If you get good at this type of system, you will get big bucks for being the guy who knows how to build the database applications correctly.