Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Работа с запросами

Опубликовано:

Ребят, всем привет. Установил новую версию, собираюсь разобраться с тем как выполнять запросы. Нужна помощь...

 

 

В каком скрипте можно покувыряться. Собственно хотел найти php код, где запрос и цикл на вывод либо тем либо постов в теме. Мол в нем попробовать через новые библии выполнить запрос.

 

Собственно, хз. Не нашел кода, подскажите в каком скрипте можно выполнить запрос и посмотреть результат?

 

К стати пробовал, прописывал "print_r('fff');". Что та не отображает вовсе, а где ошибки если выше классов прописать...

 

Хелп...

Рекомендованные сообщения

Опубликовано:

О боже, снова "библии". Либа, сленговое значение библиотеки от английского library это "либа"!

 

Класс работы с БД

/system/Db/Db.php

 

Пример селект запроса

$result = \IPS\Db::i()->select( '*', 'table', array('id=?', $id) )

 

Фетчинг результата

foreach( $result as $row )

Опубликовано:
  • Автор

Подскажи пожалуйста, в новой версии. Где тот цикл что перебирает результаты запроса на выборку постов из бд.

Можно пример запроса и как вывести результат его через print_r(). Не могу понять, как увидеть результат в браузере используя "print_r" чтобы мол тестить. Получается как в слепую...

Изменено пользователем Testweb

Опубликовано:

Где тот цикл что перебирает результаты запроса на выборку постов из бд.

 

Фетчинг результата

foreach( $result as $row )

Опубликовано:
  • Автор

477 строчка в "public function select( $c"

Прописываю "print_r('ffff');", обновляю страницу. Нету результата...

 

По идее должен показать "fff", я так дагадываюсь echo тоже не поможет...

 

Как тестить хоть?

Изменено пользователем Testweb

Опубликовано:

477 строчка в "public function select( $c"

Прописываю "print_r('ffff');", обновляю страницу.

Зачем там прописывать print_r? Смотрите выше как выполнять запросы в IPS4.

Опубликовано:

Как тестить хоть?

Подключите ядро форума и делайте тесты в отдельном файле.

Опубликовано:
  • Автор

Спс, в этой же теме

 

require_once 'init.php';

\IPS\Db::i()->select('*', 'table', array("ip='{$_SERVER['REMOTE_ADDR']}'"))->first();

 

"Что-то пошло не так. Пожалуйста, попробуйте еще раз."

 

Как узнать, что именно пошло не так?)))

Опубликовано:
Как узнать, что именно пошло не так?)))

Смотреть логи системы в /uploads/logs/

Опубликовано:

array("ip='{$_SERVER['REMOTE_ADDR']}'")

В IPS4 есть плейсхолдеры которые предотвращают sql инъекций и избавляют от подобных конструкций.

 

array( "ip=?", $_SERVER['REMOTE_ADDR'] )

Опубликовано:
  • Автор

Что та у меня по-прежнему не пропускает...

 

\IPS\Db::i()->select('*', 'sessions', array( "ip=?", $_SERVER['REMOTE_ADDR']))->first();

 

Быть может дело в таблице? На поле "ip" varchar(250)...

Опубликовано:

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 );

 

И да, посмотрите названия таблиц и полей в бд.

Опубликовано:
  • Автор

В таблице нет подходящей строчки, мне всего навсего нужно узнать имеется ли запись с данным ip или нет. Если нет, записать...

 

Так я не смогу продолжить выполнение скрипта из-за того, что ошибку выдает. Как быть?

Опубликовано:
  • Автор

catch не помогает, все записи уникальные, нужно вытащить только один массив одной строчки...

Изменено пользователем Testweb

Опубликовано:

Я не понимаю что значит не помогает, выражайтесь конкретнее. Чтобы поймать исключение используйте try-catch тогда сможете продолжить выполнения скрипта. Пример находится выше. Проверьте свой sql запрос, возможно в нем есть ошибки.

 

В таблице нет подходящей строчки, мне всего навсего нужно узнать имеется ли запись с данным ip или нет.

Для начала посмотрите названия таблицы и ее полей, вы явно не знакомы с ее структурой.

Опубликовано:
  • Автор

Все работает, просто когда нет записи по критерию. Выводится сообщение, это сообщение не улавливает try-catch.

 

Я сейчас пока так сделал

if(!$sl->count()){

 

Не вижу других вариантов...

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.