Cheshir Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 При обращении к БД \IPS\Db::i()->select, если в таблице нет искомого значения возвращается FALSE или вообще ничего не возвращается? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Cheshir Опубликовано 6 ноября, 2017 Автор Поделиться Опубликовано 6 ноября, 2017 When prompted SELECT (\IPS\Db::i()->select) and the lack of results it returns FALSE, or Null or nothing is returned? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Dmitriy427 Опубликовано 6 ноября, 2017 Поделиться Опубликовано 6 ноября, 2017 Если запрос корректен, но нет строк ему соответствующих, то возвращается либо пустая строка, либо пустой массив, в зависимости от запроса. Respected 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Cheshir Опубликовано 7 ноября, 2017 Автор Поделиться Опубликовано 7 ноября, 2017 19 часов назад, Dmitriy427 сказал: Если запрос корректен, но нет строк ему соответствующих, то возвращается либо пустая строка При таком запросе Спойлер $nexus_expire = \IPS\Db::i()->select( 'ps_expire', 'nexus_purchases', array( 'ps_member=? AND ps_type=?', \IPS\Member::loggedIn()->member_id, $ps_type ), 'ps_id DESC' )->first(); ничего не возвращается, на форуме ips посоветовали сделать так Спойлер try { $record = \IPS\Db::i()->select( '*', 'table', array( 'field=?', 'something' ) )->first(); } catch ( \UnderflowException $e ) { $record = array(); } И да, так возвращает массив, даже если нет результат. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Dmitriy427 Опубликовано 7 ноября, 2017 Поделиться Опубликовано 7 ноября, 2017 Это уже обработка ошибки БД, а значит о корректном запросе речь не идёт. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Cheshir Опубликовано 7 ноября, 2017 Автор Поделиться Опубликовано 7 ноября, 2017 1 минуту назад, Dmitriy427 сказал: корректном запросе речь не идёт. Что за бред? Отсутствие данных - это некорректный запрос? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Dmitriy427 Опубликовано 7 ноября, 2017 Поделиться Опубликовано 7 ноября, 2017 Мне сложно вам что либо объяснить, если вы не понимаете - что такое обработка исключений. В данном случае, ошибка генерируется методом "first()", класса "\IPS\Db::Select". Без конструкции "try-catch", в DEV-mode, ваш запрос будет генерировать такой вот экран: Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Dmitriy427 Опубликовано 7 ноября, 2017 Поделиться Опубликовано 7 ноября, 2017 И да, в вашем случае БД возвращает NULL. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.