2013-08-11 3 views
1

При разработке моего сайта я использую mysql_error() для отображения ошибок, поэтому я знаю, как их исправить.Обработка ошибок MySQL в PHP

Мой вопрос: когда сайт выходит в эфир, как я должен обрабатывать ошибки, потому что я не хочу, чтобы пользователь видел ошибки, но вместо этого видел удобное для пользователя сообщение, такое как «Ой, что-то пошло не так».

+0

если mysql error-> ваш скрипт обработки. –

ответ

2

Обычно вы хотите регистрировать эти ошибки в живой среде (это означает, что вы пишете сообщение об ошибке и некоторую дополнительную информацию, такую ​​как время, ip, .. в файл) На стороне пользователя вы также должны предоставить пользователю некоторую обратную связь , поэтому напечатайте хорошее сообщение об ошибке, чтобы пользователь знал, что что-то пошло не так.

Просто используйте Google, чтобы найти библиотеки Logger. В основном, они могут быть настроены на изменение поведения в условиях жизни и развития! Вы также можете посмотреть на: http://www.php-fig.org/psr/3/

0

При разработке вашего сайта, вы не должны использовать mysql_error(), потому что вы не должны использовать любого из mysql_* функций, потому что они являются устаревшими.

Самая простая обработка ошибок - это выбросить Exception. Обработчик исключений должен регистрировать сообщение об ошибке вместе с stack trace и выводить страницу с ошибкой.

1

Во-первых, я настоятельно рекомендую перейти от устаревших функций mysql_ к любому из классов MySQLi или PDO. Оба они гораздо более безопасны и поддерживаются для текущих и прогнозируемых будущих версий PHP.

Некоторые возможные решения для отображения ошибки может быть:

$sql = new mysqli($host, $user, $password, $database); 
$query = //your query 

//Option 1 
$result = $sql->query($query) or die("Something has gone wrong! ".$sql->errorno); 
//If the query fails, kill the script and print out a user friendly error as well 
//as an error number for them to quote to admins if the error continues to occur, 
//helpful for debugging for you, and easier for users to understand 

//Option 2 
$result = $sql->query($query); 
if($result) { 
    //if the query ran ok, do stuff 
} else { 
    echo "Something has gone wrong! ".$sql->errorno; 
    //if it didn't, echo the error message 
} 

Вы можете также использовать функцию PHP error_log поставить новую ошибку в журнале ошибок, которые могут содержать полные $sql->error детали для админов, чтобы посмотреть, и полностью пропустить распечатку $sql->errorno. Для получения дополнительной информации об регистрации ошибок проверьте PHP Docs