Проверка на ошибку в buildAndFetch - Дизайн и модификация Invision Power Board

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

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

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

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

Страница 1 из 1

Проверка на ошибку в buildAndFetch

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

 
 
  • Member
  • **
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 27-Декабрь 11
  • Репутация: 2
  • IPB version:3.1.x
 

Отправлено 28 Ноябрь 2019 - 06:09

Существует подобный код:

$result = $this->DB->buildAndFetch( ... );

// тут должна быть проверка на ошибку...

if ( $this->DB->getTotalRows() > 0 )
{
	// update...
}
else
{
	// insert...
}


Иногда (очень редко) когда происходит атака на форум или что то подобное, в запросе buildAndFetch может возникнуть ошибка, и в следствии чего код ниже выполняется не правильно, то есть вместо обновления записи (update) он добавляет новую (insert).

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

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

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 4 095
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 602
  • IPB version:I have no IPB
 

Отправлено 28 Ноябрь 2019 - 10:44

Что за ошибка?
Если будет sql-ошибка, то код будет остановлен.
0

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

 
 
  • Member
  • **
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 27-Декабрь 11
  • Репутация: 2
  • IPB version:3.1.x
 

Отправлено 29 Ноябрь 2019 - 00:04

В самом запросе ошибок нет.

Я не понимаю почему getTotalRows возвращает результат 0, и в следствии чего создается дублирующая запись?

Полный код: https://pastebin.com/EdrwrWwe
0

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

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 4 095
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 602
  • IPB version:I have no IPB
 

Отправлено 29 Ноябрь 2019 - 11:28

Я бы проверял данные в массиве
if ( !in_array( $this->memberData['member_group_id'], explode( ',', $this->settings['tviewedby_grupos_protegidos'] ) ) )
{
	$pesquisa = $this->DB->buildAndFetch( array(
                               'select' => 'id, member_id, tid, vezes',
                               'from'   => 'topic_viewedby',
                               'where'  => "member_id=".$this->memberData['member_id']." and tid=". (int) $this->request['t'] ) );

    if ( $pesquisa['id'] )
    {
        $vezes = $pesquisa['vezes'];
        $this->DB->update( 'topic_viewedby', array( 'dateview' => time(), 'vezes' => $vezes+1), 'id='.$pesquisa['id']  );
    }
    else
    {
        $this->DB->insert( 'topic_viewedby', array( 'tid' => (int) $this->request['t'], 'member_id' => $this->memberData['member_id'], 'dateview' => time(), 'vezes' => 1 ) );
    }
}

0

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


Страница 1 из 1


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

  

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-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна