Добрый день, верно ли так делать? первый раз фетчалл пустой так как данные из формы не поступили! Можно и @ приглушить ну как то не то! Подскажите!Посоветуйте! Код (PHP): try{ throw new Exception(); $result = $query->fetchAll(); }catch (Exception $e){ }
- приведенный код неимеет смысла (генерация исключения и тутже его перехват). - сформулируй вопрос заново. если fetchAll() вернул ноль записей это не ошибка и не исключение. обычная бизнес логика. надо вывести сообщение что данных нет.
Обращение к неизвестному методу - фатальная ошибка. Для проверки существования метода есть функция method_exists: Код (Text): if (method_exists($query, 'fetch_all')) но в твоем случае достаточно проверить, что результат не пуст Код (Text): if (!empty($query)) бросать исключение надо только после того, как условие показало, что метода нет или что результат пустой. Исключения предназначены не для обработки php-шных ошибок, а как универсальный метод обработки пользовательских ошибок (вместо return false, die('ошибка') или trigger_error (ООП вместо процедур)). Добавлено спустя 26 секунд: Кроме того, можно создавать свои классы исключений и ловить их на разных уровнях
и еще сразу после генерации исключения дальнейшее выполнение приостанавливается, и сразу выполнение скрипта переходит на перехват исключения. Короче говоря у вас там не выполнится Код (Text): $result = $query->fetchAll();
Спасибо! вот так делать буду! Код (PHP): $query = $connectionTwo->query("SELECT * FROM"); if(!empty($query)){ $result = $query->fetchAll(); }
ну вот и нужно решать эту проблему - безопасное составление запроса на основе данных из формы. тогда и фатала не будет.