What error does it give? I still could do with knowing more about the under lying structure and sql that you are using. this kind of debugging is akin to fumbling around in the dark.
The @ (or error suppression symbol) is evil because it makes debugging your code an absolute nightmare. A better solution is to test the code that may create an error before hand, instead of just hiding the error. Also it may hide errors that are useful to the debug process, its all very well and good when its on live but when you are developing it you need errors to be displayed in order for you to be able to fix them, after all you can't fix what you don't know about. In short there are a number of ways to do it without the '@' evil.
Now here we are anticipating that we may get an error from the query and we are catching it appropriately, now we can handle it as we need.
Error in query: Table 'test.categorides' doesn't exist
See clear and it tells you exactly where the problem is. Obviously you may want to control this with some logic that denotes whether the errors get printed depending on the environment (i.e. live/development or staging) Alternatively you could use trigger_error and then when on live use error_reporting to hide the errors that may occur in the live environment (which shouldn't really happen but its a good fail safe, as its a bit insecure to let your application fart errors out on a live site)
mysql> SELECT * FROM `users` WHERE `users`.`clue` > 0;
Empty set (0.00 sec)