PHP: ошибка MySQL? - PullRequest
       13

PHP: ошибка MySQL?

0 голосов
/ 17 декабря 2009

Я занимаюсь разработкой веб-приложения на PHP и MySQL. На днях я внес некоторые изменения в базу данных и адаптировал одну страницу к новому макету таблицы, но не другую страницу. Я не достаточно хорошо протестировал, поэтому сайт вышел в Интернет с ошибкой, все еще на другой странице. Это была простая ошибка MySQL, и как только один из моих коллег обнаружил ее, это было простое исправление.

Теперь, когда это произошло, я хотел бы знать, как я могу ловить другие ошибки MySQL. Я думаю о какой-то системе уведомлений, которая отправит мне электронное письмо, когда mysql_query () завершится неудачей.

Я понимаю, конечно, что я не буду уведомлен до тех пор, пока не произойдет ошибка, но, по крайней мере, я был бы уведомлен немедленно, вместо того, чтобы мой коллега пришел и сказал мне, кто, кто знает, сколько люди столкнулись с одной и той же фатальной ошибкой.

Есть ли какой-нибудь способ вставить хук, чтобы PHP автоматически запускал функцию при возникновении ошибки? Или мне нужно пройти через мой код и добавить эту функциональность в каждое место, где я использую mysql_query ()?

Если последнее, есть ли у вас какие-либо рекомендации о том, как предотвратить что-то подобное в будущем? Если это так, я, вероятно, создам класс для абстрагирования операций SQL. Я знаю, что должен был делать это все время ... Но я организовал свои наборы функций в разные включаемые файлы, поэтому, по крайней мере, я делаю большинство вещей правильно. Правильно?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2009

Вы можете использовать функцию-обёртку следующим образом:

function mysql_query_wrapper($query, $link=null)
{
    if (is_null($link)) {
        $result = myql_query($query);
    } else {
        $result = myql_query($query, $link);
    }
    if (mysql_error($result)) {
        // error occurred
    }
    return $result;
}

Тогда вам просто нужно заменить каждый mysql_query вызов на mysql_query_wrapper.

2 голосов
/ 17 декабря 2009

Вы можете использовать пользовательские функции для обработки ошибок, используя set_error_handler().

Однако mysql_query не вызовет ошибку, а вернет false . Ошибки появляются только потом при попытке поработать с результатами. В этом случае может быть лучше определить пользовательскую функцию-обертку, которая вызывает mysql_query() и выводит возможные ошибки, используя mysql_error(). Таким образом, при желании вы можете немедленно остановить приложение из-за ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...