За последние 24 часа нас посетили 23182 программиста и 1718 роботов. Сейчас ищут 1830 программистов ...

Вопрос по pdo

Тема в разделе "PHP и базы данных", создана пользователем Неугомонный, 24 фев 2018.

  1. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    Хотел бы с просить у опытных ,правильно ли я все понял ибо на каждом сайте соединение обвернуто в try/catch после чего я второй день по 10+ часов ломаю голову PDO::ERRMODE_EXCEPTION как же оно работает почему каждый сайт советует использовать именно PDO::ERRMODE_EXCEPTION а результата я не вижу..

    PDO::ERRMODE_EXCEPTION нужно использовать если я использую оператор throw ?
    Если я не использую оператор throw обворачивать в try/catch не нужно, для соединения с бд и получения ошибок мне достаточно всего лишь записать код таким образом ???
    PHP:
    1. $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuser, $dbpass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
     
    #1 Неугомонный, 24 фев 2018
    Последнее редактирование: 24 фев 2018
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
  3. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    я как там читаю на php.net пока что то пойму мозги кипеть начинают что ничего не понимаю потом вообще ((
     
  4. karmay

    karmay Активный пользователь

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Надо осваивать ООП, я сам пока в стороне от этого, но в одной из книг понял суть этого - подготовка данных (препарирование) перед запросом к базе данных и сокрытие кода (инкапсуляция), чтобы чужие не лазали. Напишите в личку свой email, кину книжку, она в pdf 2013 года, там в принципе ничего интересного, но PDO описан для новичка вполне доступно.
     
  5. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    Перезадам вопрос, PDO::ERRMODE_EXCEPTION нужно использовать совместно с try/catch ?
    Во всех остальных случаях try/catch бессполезен?
     
    #5 Неугомонный, 24 фев 2018
    Последнее редактирование: 24 фев 2018
  6. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
  7. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    Все разобрался я в try/catch и PDOException, я как всегда понаизобретал ...
    ну кто не учится тот и ничего не умеет :)
     
    MouseZver нравится это.
  8. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    расскажи и нам)) что бы в топике был ответ)) а не только вопрос)
     
  9. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    PHP:
    1. <?
    2. try {
    3. $db = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuser, $dbpass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    4. }
    5. catch (PDOException $e) {
    6. // указываем параметры, некоторые из них
    7. print $e->getCode();  // - Получаем код ошибки
    8. print $e->getFile();  // - Получаем путь к файлу, в котором возникла ошибка
    9. print $e->getMessage(); // - Получам сообщение ошибки
    10. //и т.д ...
    11. }
    12. // Исключения я могу выводить только при установленном режиме PDO::ERRMODE_EXCEPTION
    13. // если другой режим установлен например warning, или ничего не установленно будет автоматически присвоен silent, в try/catch соединение обворачивать бессмысленно ошибки я не получу как я понял при режиме в отличии от PDO::ERRMODE_EXCEPTION
    14.  
    15. // Если это режим PDO::ERRMODE_WARNING
    16. //достаточно просто создать объект без обвертки в try/catch
    17. $db = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuser, $dbpass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
     
    #9 Неугомонный, 24 фев 2018
    Последнее редактирование: 24 фев 2018
    Алекс8 нравится это.
  10. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    А кто не тестит тот может заблуждаться, try/catch будет работать и при PDO::ERRMODE_WARNING, вот я получил такую-же ошибку как и при PDO::ERRMODE_EXCEPTION :
    SQLSTATE[42000] [1049] Unknown database 'tes'
     
  11. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    а кто читал плохо туториалы тот плохо понимает что пишет
    PDOException - это класс для работы с ошибками
    PDO::ERRMODE_WARNING - это режим работы с ошибками который просто выдаст обычное E_WARNING сообщение
     
    #11 Неугомонный, 24 фев 2018
    Последнее редактирование: 24 фев 2018
  12. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Это скорее про тебя, вот то что ты написал в своем толковании:
    Это не правда, при варнинге обернуть в try/catch и получить ошибки можно.
     
  13. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    ну да, говнокод еще никто не отменял
    --- Добавлено ---
    try/catch если че так есть смысл при транзакциях использовать только