Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Своя страница ошибки для MySQL error


Автор: begin 14.4.2011, 00:01
Есть сайт на php+MySql, где база используется таким образом (при каждом запросе):
$db = mysql_connect($table_name,$dbuser,$pass);
mysql_select_db($db_name,$db);
//делаем запрос
mysql_close($db);
Каждый раз подключение/отключение необходимо, т.к. некоторые таблицы могут находится на разных физических серверах нашей базы данных.
Подскажите, как можно отловить возможную ошибку подключения к базе и, реагируя на нее, редиректить посетителей на особую страницу ошибок, наподобие "ошибка базы данных" (остальные страницы ошибок у нас есть и заданы в .htaccess)
Задача осложняется тем, что подключение к базе происходит не в каком-то одном конфиге, а во многих скриптах. Поэтому нужно какое-то просто внедряемое решение.  smile 

Автор: cia 14.4.2011, 00:24
На самом деле лучше всётаки перенести подключение к базе данных в один файл (правда, я не знаю сколько таких подключений у вас) и избавиться от целой кучи возможных проблем. А ещё лучше завернуть подключение в класс, чтобы для каждого запроса к одному серверу не создавать отдельное подключение.
Способа отловить ошибку подключения легко и непринуждённо нет. Даже try не поможет.

Автор: comcon1 16.4.2011, 23:16
Цитата(cia @  14.4.2011,  00:24 Найти цитируемый пост)
Способа отловить ошибку подключения легко и непринуждённо нет. Даже try не поможет.

Поясните, плиз, что это значит?

Нельзя ли просто везде заменить mysql_connect на mysql__connect и еопределить функцию где-то в начале, что де, если она возвращает false - отдавать header-ом редирект на страницу mysqlerror_connect.html
(это конечно, при условии, что не выводятся буквы до коннектов. Но я думаю, так оно и есть, потому что оно всегда так)))

или вы имеете ввиду, что инногда mysql_connect возвращает не false, а коннекта все равно нет?

Автор: begin 19.4.2011, 23:19
К сожалению, отдавать header-ом редирект на страницу mysqlerror_connect.html не получится - все таки у нас запросы происходят во многих местах построения каждой страницы.

Автор: Muerto 19.4.2011, 23:48
begin, window.location/redirect parent.location и тп. Смотри в сторону javascript и редайректи, откуда угодно... есть ещё и meta

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)