Эй, ребята, мне было интересно, почему вы «подавите» ошибку php? Я, очевидно, вижу разницу в дополнительной строке, которая выплевывается из ошибки … но хорошо ли ее подавлять?
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)
Если да, должен ли я привык печатать @ в начале моих запросов mysql в моем php?
Благодаря!
Вы не должны вдаваться в привычку подавлять ошибки. Ошибки есть по какой-то причине. Вместо этого обработайте их правильно и защитно в своем коде и продолжайте уточнять код до тех пор, пока ошибки не исчезнут.
Вы должны делать такие вещи, как:
$conn = mysql_connect($host, $user, $pass); // Always test to see if your action/connection/whatever was successful if (!$conn) { // something went wrong. handle the error // Display a message for the user, write a message to `error_log()`, whatever's appropriate } else mysql_select_db($dbname);
В производственной системе вы никогда не должны отображать ошибки, поскольку это может привести к отказу от деталей вашего кода и базы данных. Вместо этого отключите display_errors
в php.ini или во время выполнения:
// In development and production, make sure all errors are reported error_reporting(E_ALL & E_STRICT); // In development show all errors on screen so you handle them as they occur ini_set('display_errors', 1); // In production turn them off ini_set('display_errors', 0);
На самом деле, подавление ошибок с помощью @
является вторым по популярности для плохой практики PHP в этом классическом вопросе.