a 500 will only be thrown if there is an exception thrown by php, not by logical errors. a select query returning a blank result isn't considered to be an error by php as sometimes queries will return a blank result as part of the legitimate flow of the code.
with regards to getting a 500 instead of a 400, it appears here http://www.javascriptkit.com/howto/htaccess2.shtml that you should be forwarding to a page rather than trying to pass in a string. set up a page that you want to be displayed and then put the url in your htaccess
like so:
ErrorDocument 500 /errors/serverr.html