Testweb 3 11/09/2016 08:44 AM Ребят, всем привет. Установил новую версию, собираюсь разобраться с тем как выполнять запросы. Нужна помощь... В каком скрипте можно покувыряться. Собственно хотел найти php код, где запрос и цикл на вывод либо тем либо постов в теме. Мол в нем попробовать через новые библии выполнить запрос. Собственно, хз. Не нашел кода, подскажите в каком скрипте можно выполнить запрос и посмотреть результат? К стати пробовал, прописывал "print_r('fff');". Что та не отображает вовсе, а где ошибки если выше классов прописать... Хелп... Share this post Link to post Share on other sites
siv1987 2,622 11/09/2016 09:30 AM О боже, снова "библии". Либа, сленговое значение библиотеки от английского library это "либа"! Класс работы с БД /system/Db/Db.php Пример селект запроса$result = \IPS\Db::i()->select( '*', 'table', array('id=?', $id) ) Фетчинг результатаforeach( $result as $row ) 1 Share this post Link to post Share on other sites
Testweb 3 11/09/2016 10:18 AM (edited) Подскажи пожалуйста, в новой версии. Где тот цикл что перебирает результаты запроса на выборку постов из бд. Можно пример запроса и как вывести результат его через print_r(). Не могу понять, как увидеть результат в браузере используя "print_r" чтобы мол тестить. Получается как в слепую... Edited November 9, 2016 by Testweb Share this post Link to post Share on other sites
siv1987 2,622 11/09/2016 10:39 AM Где тот цикл что перебирает результаты запроса на выборку постов из бд. Фетчинг результатаforeach( $result as $row ) Share this post Link to post Share on other sites
Testweb 3 11/09/2016 10:39 AM (edited) 477 строчка в "public function select( $c"Прописываю "print_r('ffff');", обновляю страницу. Нету результата... По идее должен показать "fff", я так дагадываюсь echo тоже не поможет... Как тестить хоть? Edited November 9, 2016 by Testweb Share this post Link to post Share on other sites
siv1987 2,622 11/09/2016 10:41 AM 477 строчка в "public function select( $c" Прописываю "print_r('ffff');", обновляю страницу.Зачем там прописывать print_r? Смотрите выше как выполнять запросы в IPS4. Share this post Link to post Share on other sites
siv1987 2,622 11/09/2016 10:47 AM Как тестить хоть?Подключите ядро форума и делайте тесты в отдельном файле. Share this post Link to post Share on other sites
Testweb 3 11/09/2016 10:59 AM Спс, в этой же теме require_once 'init.php'; \IPS\Db::i()->select('*', 'table', array("ip='{$_SERVER['REMOTE_ADDR']}'"))->first(); "Что-то пошло не так. Пожалуйста, попробуйте еще раз." Как узнать, что именно пошло не так?))) Share this post Link to post Share on other sites
siv1987 2,622 11/09/2016 11:05 AM Как узнать, что именно пошло не так?)))Смотреть логи системы в /uploads/logs/ Share this post Link to post Share on other sites
siv1987 2,622 11/09/2016 11:08 AM array("ip='{$_SERVER['REMOTE_ADDR']}'")В IPS4 есть плейсхолдеры которые предотвращают sql инъекций и избавляют от подобных конструкций. array( "ip=?", $_SERVER['REMOTE_ADDR'] ) Share this post Link to post Share on other sites
Testweb 3 11/09/2016 11:18 AM Что та у меня по-прежнему не пропускает... \IPS\Db::i()->select('*', 'sessions', array( "ip=?", $_SERVER['REMOTE_ADDR']))->first(); Быть может дело в таблице? На поле "ip" varchar(250)... Share this post Link to post Share on other sites
siv1987 2,622 11/09/2016 11:30 AM first() возвращает первую строку или выбрасывает исключение в случае пустого результата. Поэтому его надо заключать в блок try catch try { $row = \IPS\Db::i()->select( '*', 'core_sessions', array( "ip_address=?", $_SERVER['REMOTE_ADDR'] ) )->first(); print_r( $row ); } catch( \UnderflowException $e ) { echo 'Error'; } Либо использовать iterator_to_array который возвращает результирующий массив - многомерный если колонок больше двух, одномерный если селект содержит только одну колонку. $row = iterator_to_array( \IPS\Db::i()->select( '*', 'core_sessions', array( "ip_address=?", $_SERVER['REMOTE_ADDR'] ) ) ); print_r( $row ); И да, посмотрите названия таблиц и полей в бд. Share this post Link to post Share on other sites
Testweb 3 11/09/2016 11:58 AM В таблице нет подходящей строчки, мне всего навсего нужно узнать имеется ли запись с данным ip или нет. Если нет, записать... Так я не смогу продолжить выполнение скрипта из-за того, что ошибку выдает. Как быть? Share this post Link to post Share on other sites
Testweb 3 11/09/2016 11:58 AM (edited) catch не помогает, все записи уникальные, нужно вытащить только один массив одной строчки... Edited November 9, 2016 by Testweb Share this post Link to post Share on other sites
siv1987 2,622 11/09/2016 02:30 PM Я не понимаю что значит не помогает, выражайтесь конкретнее. Чтобы поймать исключение используйте try-catch тогда сможете продолжить выполнения скрипта. Пример находится выше. Проверьте свой sql запрос, возможно в нем есть ошибки. В таблице нет подходящей строчки, мне всего навсего нужно узнать имеется ли запись с данным ip или нет.Для начала посмотрите названия таблицы и ее полей, вы явно не знакомы с ее структурой. Share this post Link to post Share on other sites