Функция для захвата всех ошибок MySQL? - PullRequest
0 голосов
/ 06 сентября 2010

Есть ли у кого-нибудь функция PHP, которая, например, если mysql_error() происходит из-за ошибки MySQL, не будет выводить ее?

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

Я просто нахожу это настолько раздражающим, как делаю это сейчас:

$q = mysql_query("SELECT * FROM something");

// if error occurs
if(!$q) {
   echo 'Error' . mysql_error();
} else {
  // else no errors so continue
}

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

Таким образом, я могу избавить себя от лишней работы и реализовать ее с помощью функции электронной почты.

Ответы [ 4 ]

3 голосов
/ 06 сентября 2010

Один из способов - написать собственную функцию, скажем, sql_query, которая выглядит примерно так:

function sql_query($sql) {
    $q = mysql_query($sql);
    // if error occurs
    if(!$q) {
       //your error handling code
    } else {
       return $q;
    }
}

Затем вы используете эту функцию везде, где хотите выполнить SQL-запрос.

Гораздо лучший способ - использовать в этом PDO, исключения и т. Д.

1 голос
/ 06 сентября 2010

Самое надежное решение - это, вероятно, использовать trigger_error(). Таким образом, вы можете подключиться к системе обработки ошибок PHP, которая уже готова работать со средами разработки и производства.

$querySql = 'SELECT * FROM `foo`';
$queryResult = mysql_query($querySql);

if (!$queryResult) {
    trigger_error('Unable to execute query: ' . $querySql, E_USER_NOTICE);
}

Конечно, самое удобное было бы сделать функцию декорирования для mysql_query(), которая автоматически вызвала ошибку. Принцип СУХОГО всегда применяется.

1 голос
/ 06 сентября 2010

Создайте или используйте слой абстракции БД.

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

0 голосов
/ 06 сентября 2010

Я думаю, я не понимаю, что вам нужно.

Если вы хотите «скрыть» ошибку от печати на странице, вы можете просто использовать префикс «@»:

$ q = @mysql_query ("ВЫБРАТЬ * ОТ что-то ");

С помощью '@' ошибки подавляются конечному пользователю.

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