Хотел бы с просить у опытных ,правильно ли я все понял ибо на каждом сайте соединение обвернуто в try/catch после чего я второй день по 10+ часов ломаю голову PDO::ERRMODE_EXCEPTION как же оно работает почему каждый сайт советует использовать именно PDO::ERRMODE_EXCEPTION а результата я не вижу.. PDO::ERRMODE_EXCEPTION нужно использовать если я использую оператор throw ? Если я не использую оператор throw обворачивать в try/catch не нужно, для соединения с бд и получения ошибок мне достаточно всего лишь записать код таким образом ??? PHP: $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuser, $dbpass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
@Неугомонный, все три режима доступно описаны в документации. Даже не знаю, что еще к тому можно добавить.
я как там читаю на php.net пока что то пойму мозги кипеть начинают что ничего не понимаю потом вообще ((
Надо осваивать ООП, я сам пока в стороне от этого, но в одной из книг понял суть этого - подготовка данных (препарирование) перед запросом к базе данных и сокрытие кода (инкапсуляция), чтобы чужие не лазали. Напишите в личку свой email, кину книжку, она в pdf 2013 года, там в принципе ничего интересного, но PDO описан для новичка вполне доступно.
Перезадам вопрос, PDO::ERRMODE_EXCEPTION нужно использовать совместно с try/catch ? Во всех остальных случаях try/catch бессполезен?
Все разобрался я в try/catch и PDOException, я как всегда понаизобретал ... ну кто не учится тот и ничего не умеет
PHP: <? try { $db = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuser, $dbpass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (PDOException $e) { // указываем параметры, некоторые из них print $e->getCode(); // - Получаем код ошибки print $e->getFile(); // - Получаем путь к файлу, в котором возникла ошибка print $e->getMessage(); // - Получам сообщение ошибки //и т.д ... } // Исключения я могу выводить только при установленном режиме PDO::ERRMODE_EXCEPTION // если другой режим установлен например warning, или ничего не установленно будет автоматически присвоен silent, в try/catch соединение обворачивать бессмысленно ошибки я не получу как я понял при режиме в отличии от PDO::ERRMODE_EXCEPTION // Если это режим PDO::ERRMODE_WARNING //достаточно просто создать объект без обвертки в try/catch $db = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuser, $dbpass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
А кто не тестит тот может заблуждаться, try/catch будет работать и при PDO::ERRMODE_WARNING, вот я получил такую-же ошибку как и при PDO::ERRMODE_EXCEPTION : SQLSTATE[42000] [1049] Unknown database 'tes'
а кто читал плохо туториалы тот плохо понимает что пишет PDOException - это класс для работы с ошибками PDO::ERRMODE_WARNING - это режим работы с ошибками который просто выдаст обычное E_WARNING сообщение
Это скорее про тебя, вот то что ты написал в своем толковании: Это не правда, при варнинге обернуть в try/catch и получить ошибки можно.
ну да, говнокод еще никто не отменял --- Добавлено --- try/catch если че так есть смысл при транзакциях использовать только