Romzes 6 11/28/2019 04:09 AM Существует подобный код: $result = $this->DB->buildAndFetch( ... ); // тут должна быть проверка на ошибку... if ( $this->DB->getTotalRows() > 0 ) { // update... } else { // insert... } Иногда (очень редко) когда происходит атака на форум или что то подобное, в запросе buildAndFetch может возникнуть ошибка, и в следствии чего код ниже выполняется не правильно, то есть вместо обновления записи (update) он добавляет новую (insert). Как мне сделать проверку на ошибку, чтобы в случае её возникновения не выполнять код? Share this post Link to post
newbie 1,723 11/28/2019 08:44 AM Что за ошибка?Если будет sql-ошибка, то код будет остановлен. Share this post Link to post
Romzes 6 11/28/2019 10:04 PM В самом запросе ошибок нет. Я не понимаю почему getTotalRows возвращает результат 0, и в следствии чего создается дублирующая запись? Полный код: https://pastebin.com/EdrwrWwe Share this post Link to post
newbie 1,723 11/29/2019 09:28 AM Я бы проверял данные в массиве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 ) ); } } Share this post Link to post