The error checking should happen in the model layer.
To be specific, in data mappers or other structures which deal with data abstraction. If you are using PDO, an SQL error would rise an exception, which is handles at the level of storage abstractions. This is done by assigning an error state to the domain object, which you were storing or populating at that time.
Controller exists in completely different layer: presentation layer. It should not be aware of internal problems of domain business logic, which is handles by model layer. That would lead to a leaking abstraction.
The view, when gathering information to display, should at first request the services, that it uses, to return the status. If services inform the view about existing error state, view request more detailed information, and decides how to react this the error and which group templates to utilized for visualization of the error state.