Since this is security.stackexchange.com, I'm going to focus on the security question. (I agree with other posters/commenters: this is generally not a good design for long term maintainability. It's probably not great for performance but that's impossible to know without knowing exactly how users -- including you, the admin -- are querying it.)
From a security POV, separating user data into different tables in MySQL will only have benefit if you also set up individual user accounts for each user in MySQL, and then explicitly set their permissions so that they can only access those tables. At that point, the permissions become a huge mess to keep track of, validate, and correct, but it would mitigate the risk of a SQL injection attack.
It would be conceptually easier to give each user their own schema (or "database" in MySQL parlance) and give them privileges to their entire schema. This makes the privileges much easier to audit and still mitigates the risk of SQL injection.
This latter concept isn't totally insane -- lots of servers are configured this way in order to run several different database-backed application on the same server without letting them access each other's data. Whether it makes sense in your case depends, to a large degree, on how many users you have.
I'm not endorsing your design; just pointing out the pros/cons.
abe shown to userb? – Polynomial Aug 8 '12 at 11:56