Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Testweb

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

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

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

 

 

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

 

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

 

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

 

Хелп...

Поделиться сообщением


Ссылка на сообщение

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

 

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

/system/Db/Db.php

 

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

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

 

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

foreach( $result as $row )

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
11/09/16 10:18 (изменено)

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

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

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

foreach( $result as $row )

Поделиться сообщением


Ссылка на сообщение
11/09/16 10:39 (изменено)

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 или нет. Если нет, записать...

 

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

Поделиться сообщением


Ссылка на сообщение
11/09/16 11:58 (изменено)

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

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

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

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

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

×
×
  • Создать...