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