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

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

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

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

 

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

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

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

 

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

 

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

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


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

Что за ошибка?

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

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


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

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

 

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

 

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

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


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

Я бы проверял данные в массиве

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 пользователей

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

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