Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PDO и вывод ошибок

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DeUM
Отправлено: 28 Июня, 2016 - 11:06:54
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Здравствуйте.
Хочу перейти на PDO... Но столкнулся с проблемой "вывод ошибок".
PHP:
скопировать код в буфер обмена
  1.  
  2. try {
  3.         $opt = array(
  4.             PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  5.             PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  6.         );
  7.         $c = new PDO("mysql:host=$host;dbname=$bd", $login, $key, $opt);
  8.     }
  9.     catch(PDOException $e) {
  10.         die("Err:".$e->getMessage());
  11.     }
  12.  

При неправильных данных выводится ошибка."Warning: PDO::__construct()..."
Как нужно сделать чтобы ошибки не выводились?
т.е. как (MySQL)
PHP:
скопировать код в буфер обмена
  1.  
  2. @mysql_connect($data, $data1, $data2) or die("Мой ошибка!")
  3.  
 
 Top
Prizma
Отправлено: 28 Июня, 2016 - 14:40:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




Попробуй так.. у меня всё перехватывает:

(Добавление)
Если не удалось создать экземпляр PDO с заданными параметрами, значит они не верные или база данных недоступна, а вот какой там тип у ошибки... я использую общий, какая в принципе разница?


Зато точно перехватит Улыбка тип ошибок нужен, когда ты разные ошибки ловишь, а при создании PDO, что не поймай, всё одно

(Отредактировано автором: 28 Июня, 2016 - 14:44:30)

 
My status
 Top
Мелкий Супермодератор
Отправлено: 28 Июня, 2016 - 15:39:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ни разу не видел warning от конструктора PDO. Он всегда кидает исключения, и судя по исходнику от 5.6.22, только в паре случаев может спровоцировать E_ERROR - на out of memory и при попытке регистрации постоянного соединения.

PDO кидает именно PDOException. Откуда у вас warning? Это весь скрипт?


-----
PostgreSQL DBA
 
 Top
DeUM
Отправлено: 29 Июня, 2016 - 03:43:04
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Мелкий пишет:
PDO кидает именно PDOException. Откуда у вас warning? Это весь скрипт?

Нет вот весь:
PHP:
скопировать код в буфер обмена
  1.  
  2. Warning: PDO::__construct() [pdo.--construct]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. in C:\server\OpenServer\domains\www.max.oi\setup\setup.php on line 44
  3.  
  4. Warning: PDO::__construct() [pdo.--construct]: [2002] php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. (trying to connect via tcp://localhosts:3306) in C:\server\OpenServer\domains\www.max.oi\setup\setup.php on line 44
  5. Err:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен.
  6.  
 
 Top
Sail
Отправлено: 29 Июня, 2016 - 09:04:14
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




DeUM, в общем, используйте конструкцию:
PHP:
скопировать код в буфер обмена
  1. try{ /* ... */
  2. } catch (PDOException $e) { /* ... */
  3. } catch (Exception $e) { /* ... */
  4. }
 
 Top
Мелкий Супермодератор
Отправлено: 29 Июня, 2016 - 09:31:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А, варнинг прилетел от getaddrinfo...
Поставьте set_error_handler, который будет пойманные ошибки переписывать в исключения.

В PHP7 многие ошибки заменили на исключения (напомню, что они наследованы не от Exception и catch Exception их не поймает), но и там set_error_handler лишним не будет.


-----
PostgreSQL DBA
 
 Top
DeUM
Отправлено: 29 Июня, 2016 - 13:32:52
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Sail Не работает.
Мелкий Спасибо помогло.
Тема закрыта.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB