За последние 24 часа нас посетили 23545 программистов и 1664 робота. Сейчас ищут 847 программистов ...

Проверка Метода fetchALL

Тема в разделе "Прочие вопросы по PHP", создана пользователем immortal.1986, 31 мар 2014.

  1. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    Добрый день,
    верно ли так делать?
    первый раз фетчалл пустой так как данные из формы не поступили!
    Можно и @ приглушить ну как то не то!
    Подскажите!Посоветуйте!
    Код (PHP):
    1. try{
    2.          throw new Exception();
    3.       $result = $query->fetchAll();
    4.      }catch (Exception $e){
    5.      } 
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    - приведенный код неимеет смысла (генерация исключения и тутже его перехват).
    - сформулируй вопрос заново.
    если fetchAll() вернул ноль записей это не ошибка и не исключение. обычная бизнес логика. надо вывести сообщение что данных нет.
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Обращение к неизвестному методу - фатальная ошибка. Для проверки существования метода есть функция method_exists:
    Код (Text):
    1. if (method_exists($query, 'fetch_all'))
    но в твоем случае достаточно проверить, что результат не пуст
    Код (Text):
    1. if (!empty($query))
    бросать исключение надо только после того, как условие показало, что метода нет или что результат пустой. Исключения предназначены не для обработки php-шных ошибок, а как универсальный метод обработки пользовательских ошибок (вместо return false, die('ошибка') или trigger_error (ООП вместо процедур)).

    Добавлено спустя 26 секунд:
    Кроме того, можно создавать свои классы исключений и ловить их на разных уровнях
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    и еще сразу после генерации исключения дальнейшее выполнение приостанавливается, и сразу выполнение скрипта переходит на перехват исключения.
    Короче говоря у вас там не выполнится
    Код (Text):
    1. $result = $query->fetchAll();
     
  5. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    Спасибо!
    вот так делать буду!
    Код (PHP):
    1. $query = $connectionTwo->query("SELECT * FROM");
    2.     if(!empty($query)){
    3.      $result = $query->fetchAll();
    4.     } 
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    еще хуже.
    что вы вообще хотите сделать? в чем проблема изначально?
     
  7. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    в запрос летят даные из формы!!!! тоесть первый раз он выдает ФАТАЛ ЕРОР! вот и все!
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ну вот и нужно решать эту проблему - безопасное составление запроса на основе данных из формы. тогда и фатала не будет.