Работа с запросами - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

  • 2 Страниц +
  • 1
  • 2

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

#1 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 09 Ноябрь 2016 - 11:43

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


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

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

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

Хелп...
0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 713
  • Регистрация: 20-Март 09
  • Репутация: 2 267
  • IPB version:3.1.x
 

Отправлено 09 Ноябрь 2016 - 12:29

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

Класс работы с БД
/system/Db/Db.php

Пример селект запроса
$result = \IPS\Db::i()->select( '*', 'table', array('id=?', $id) )

Фетчинг результата
foreach( $result as $row )
1

#3 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 09 Ноябрь 2016 - 13:17

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

Сообщение изменено: Testweb (09 Ноябрь 2016 - 13:35)

0

#4 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 713
  • Регистрация: 20-Март 09
  • Репутация: 2 267
  • IPB version:3.1.x
 

Отправлено 09 Ноябрь 2016 - 13:38

Просмотреть сообщениеTestweb сказал(а):

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


Просмотреть сообщениеsiv1987 сказал(а):

Фетчинг результата
foreach( $result as $row )

0

#5 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 09 Ноябрь 2016 - 13:38

477 строчка в "public function select( $c"
Прописываю "print_r('ffff');", обновляю страницу. Нету результата...

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

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

Сообщение изменено: Testweb (09 Ноябрь 2016 - 13:39)

0

#6 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 713
  • Регистрация: 20-Март 09
  • Репутация: 2 267
  • IPB version:3.1.x
 

Отправлено 09 Ноябрь 2016 - 13:40

Просмотреть сообщениеTestweb сказал(а):

477 строчка в "public function select( $c"
Прописываю "print_r('ffff');", обновляю страницу.

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

#7 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 713
  • Регистрация: 20-Март 09
  • Репутация: 2 267
  • IPB version:3.1.x
 

Отправлено 09 Ноябрь 2016 - 13:46

Просмотреть сообщениеTestweb сказал(а):

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

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

#8 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 09 Ноябрь 2016 - 13:58

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

require_once 'init.php';

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


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

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

#9 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 713
  • Регистрация: 20-Март 09
  • Репутация: 2 267
  • IPB version:3.1.x
 

Отправлено 09 Ноябрь 2016 - 14:04

Цитата

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

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

#10 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 713
  • Регистрация: 20-Март 09
  • Репутация: 2 267
  • IPB version:3.1.x
 

Отправлено 09 Ноябрь 2016 - 14:07

Просмотреть сообщениеTestweb сказал(а):

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

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

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

0

#11 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 09 Ноябрь 2016 - 14:17

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

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


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

#12 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 713
  • Регистрация: 20-Март 09
  • Репутация: 2 267
  • IPB version:3.1.x
 

Отправлено 09 Ноябрь 2016 - 14:29

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


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

#13 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 09 Ноябрь 2016 - 14:57

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

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

#14 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 09 Ноябрь 2016 - 14:57

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

Сообщение изменено: Testweb (09 Ноябрь 2016 - 15:09)

0

#15 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 713
  • Регистрация: 20-Март 09
  • Репутация: 2 267
  • IPB version:3.1.x
 

Отправлено 09 Ноябрь 2016 - 17:29

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

Цитата

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

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

Сообщить об этой теме:


  • 2 Страниц +
  • 1
  • 2


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна