If you want exceptions, then you need to use PDO.
in case of pg_* functions and your code, you need to check whether $result has the value of false, if it does, then an error occured.
You can get the error description with pg_last_error()
Something like this:
$result = pg_query_params ( $dbconn,
'DELETE FROM questions
WHERE question_id = $1',
array ( $question_id )
);
if ($result === false) {
print pg_last_error($dbconn);
} else {
print 'everything was ok';
}
So, basically, every time you use a pg_* function, you need to check whether false was returned, that's just the way it is with those functions.
Yes, you can build your own wrappers so instead of pg_query* you call my_db_query(), which then does the return value checking and exception throwing.
Or, you could go with PDO, which is able to throw you PDOException for all the errors that can occour.