Bugfix: PDO error codes can be strings, and thus need to be cast to int when used as the second param of new Exception()
Return boolean, not object, when query fails (or return no rows)