Jump to content
Дизайн и модификация Invision Power Board IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Testweb

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

Recommended Posts

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

 

 

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

 

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

 

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

 

Хелп...

Share this post


Link to post
Share on other sites

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

 

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

/system/Db/Db.php

 

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

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

 

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

foreach( $result as $row )

  • Upvote 1

Share this post


Link to post
Share on other sites

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

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

Edited by Testweb

Share this post


Link to post
Share on other sites

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

 

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

foreach( $result as $row )

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

Edited by Testweb

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

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
Как узнать, что именно пошло не так?)))

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

Edited by Testweb

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...