Posted 6 ноября, 20177 yr comment_138906 При обращении к БД \IPS\Db::i()->select, если в таблице нет искомого значения возвращается FALSE или вообще ничего не возвращается?
6 ноября, 20177 yr Author comment_138922 When prompted SELECT (\IPS\Db::i()->select) and the lack of results it returns FALSE, or Null or nothing is returned?
6 ноября, 20177 yr comment_138923 Если запрос корректен, но нет строк ему соответствующих, то возвращается либо пустая строка, либо пустой массив, в зависимости от запроса.
7 ноября, 20177 yr Author comment_138946 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(); } И да, так возвращает массив, даже если нет результат.
7 ноября, 20177 yr comment_138995 Это уже обработка ошибки БД, а значит о корректном запросе речь не идёт.
7 ноября, 20177 yr Author comment_138996 1 минуту назад, Dmitriy427 сказал: корректном запросе речь не идёт. Что за бред? Отсутствие данных - это некорректный запрос?
7 ноября, 20177 yr comment_138999 Мне сложно вам что либо объяснить, если вы не понимаете - что такое обработка исключений. В данном случае, ошибка генерируется методом "first()", класса "\IPS\Db::Select". Без конструкции "try-catch", в DEV-mode, ваш запрос будет генерировать такой вот экран:
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.