I was wondering why you would “suppress” a PHP error. I obviously see the difference in the extra warning line that the error produces, but is it good to suppress it?
Access denied for user 'user'@'localhost' (using password: YES)
vs
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'user'@'localhost' (using password: YES) in (deleted) on line 8
Access denied for user 'user'@'localhost' (using password: YES)
If so, should I get into the habit of typing @
at the start of my MySQL queries in my PHP programs?
You should positively NOT get into the habit of suppressing errors. The errors are there for a reason. Instead, handle them properly and defensively in your code, and keep refining your code until the errors are gone.
You should do things like:
On a production system, you should never display errors, since it risks giving up details of your code and database. Instead, turn
display_errors
off in php.ini, or at runtime:In fact, error suppression with
@
is the second most voted for PHP bad practice in this classic question.