Здравствуйте. Мне необходимо на страницу выводить информацию ввиде ON(Active) или OFF(Not active) о статусе подключения к БД, если не возможно подключиться(неверный логин, пароль, хост) выводить OFF. Аналогично проверка наличия БД N, и таблиц. Я думал создавать подключение к MySQL через функцию, затем проверять выполнилась функция или нет и выводить соответсвующий статус. Но мне сразуже выводит ошибку о подключении к бд. Помогите пожалуйста, натолкните на мысль или покажите пример. Спасибо )
что за велосипед надумал? используй конструкцию кода try { подключение БД ON } catch( ... ) {... OFF }
Я делаю кое-какую программку для расчетов. Мне необходимо вывести информацию о статусе програмки(установлена она или нет), если нет то произвести установку(создать БД, залить таблицы из файла); Спасибо за информацию. Не знал про исключения )) Попытаюсь реализовать и отпишу если получится )
Что-то у меня не получается. Сделал функцию (тут с ошибочным именем пользователя) выводит стандартную ошибку: Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'roott'@'localhost' (using password: NO) in C:\webserver\OpenServer\domains\test2\index.php on line 17 и снизу Status OFF Но мне надо чтобы стандартной ошибки небыло, подскажите как избавиться? p.s. можно отключить показ ошибок через htaccess и все будет нормально отображаться, но это не правильно, хотелось бы правильный вариант решения проблемы. про mysqli знаю, потом буду косяки исправлять ) PHP: function db_status() { //настройки подключения к базе данных $hostname = "localhost"; $username = "roott"; $password = ""; $dbname = "plan"; //языковые настройки setlocale(LC_ALL, 'ru_RU.CP1251'); //подключение к БД try { $connect = mysql_connect($hostname, $username, $password); if (!$connect) { throw new Exception('0'); } else throw new Exception('1'); } catch (Exception $ex) { //Выводим сообщение об исключении. if ($ex->getMessage() == '0') echo "Status OFF"; elseif ($ex->getMessage() == '1') { echo "Status ON"; } } //mysql_query('SET NAMES cp1251'); }
маленько поигрался, потом все таки дописал exit; так как запросы кБД все поломаны будут и как не крути ошибку словим если заюзаем остальной участок кода. PHP: <?php Class SQL { const HOST = 'localhost'; const DB_NAME = 'blogpric_base'; const USER = 'roott'; const PASSWORD = ''; protected static $INSTANCE = NULL; public static function instance() { if ( self::$INSTANCE === NULL ) { try { self::$INSTANCE = new PDO( 'mysql:host=' . self::HOST . ';dbname=' . self::DB_NAME . ';charset=utf8', self::USER, self::PASSWORD ); self::$INSTANCE -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); } catch ( Exception $e ) { echo 2222; exit; # <- тут раки зимуют } } return self::$INSTANCE; } public static function __callStatic( $method, $args ) { return call_user_func_array ( [ self::instance(), $method ], $args ); } public static function P( $sql, $args = [] ) { $stmt = self::instance() -> prepare( $sql ); $stmt -> execute( $args ); return $stmt; } } --- Добавлено --- Эм... скрипт и все прочее за все и всегда utf-8 без BOM Удали строку, преобразуй скрипт, БД тоже в стандарт --- Добавлено --- мм рядом с протектором можно дописать public static $STATUS = false; Код (Text): self::$INSTANCE -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); self::$STATUS = true; --- Добавлено --- сразу ясно будет что в катче офф, можно и не проверять.