Ir para conteúdo
Good

Duplicando registros mesmo com verificação?

Recommended Posts

Boa tarde, nunca tive problema parecido... Eu recebo postback de uma intermediadora de pagamento, e deveria funcionar corretamente, o código está certo, já revisei várias vezes.

 

Primeiro eu executo a query, neste modelo: 

SELECT status FROM vendas WHERE id_venda = 'XXXXXXXXXXXX' LIMIT 1

Aí eu faço a verificação se o registro já está cadastrado vai apenas atualizar as informações. Agora se não tiver cadastrado, vai inserir..

Eu fiz o teste e gravei a mesma query numa coluna que criei, e também a quantidade de registros se já existir. Por incrível que pareça, a query é exatamente a mesma. Os mesmos valores, e o mysqli_num_rows sempre retorna valor 0.

 

Eu não faço ideia do que seja, o que pode ser talvez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu utilizo um servidor compartilhado da hostgator. Será que está acontecendo algum delay na verificação? Pq eu executo as query no phpmyadmin, e retorna corretamente a quantidade existente na tabela.

 

---------

 

o que eu percebi: o sistema só insere 2x o mesmo registro. Eu já retirei a verificação, e vi que todos os callback são enviados várias vezes em poucos segundos (não sei porque).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para casos assim nas aplicações que crio eu não faço uma consulta para depois inserir registros, ainda mais se eu não quero tal ação.Você pode modificar seu banco de dados criando INDEXes que não permitem duplicação de registro baseado em colunas chaves.

 

E no proprio código, na querie, você pode user o INSERT ON DUPLICATE KEY UPDATE - http://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/

 

Desta forma o mysql vai atualizar o registro caso a querie de insert retorne algum erro sobre registro duplicado com base nas indexes criadas que eu comentei no inicio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por freitaz
      Bom Quando tento alterar o formulário ele me trás a resposta "Atualizado com sucesso" mas não é atualizado no banco de dados se alguém poder me ajudar agradeço !
       
      código de cadastro
       
      <div class="card-body"> <?php $executivo = new Exe(); if ($_SERVER["REQUEST_METHOD"] == "GET") { //Using GET $id = $_GET['id']; $titulo = $_GET['titulo']; $categoria = $_GET['categoria']; $action = $_GET['action']; $file = $_GET['arquivo']; } if (isset($_POST["btnPublicar"])) { $id = $_POST['id']; $titulo = $_POST['titulo']; $categoria = $_POST['categoria']; $action = $_POST['action']; $file = $_POST['filetext']; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Check if file was uploaded without errors $filename = $_FILES["file"]["name"]; $filetype = $_FILES["file"]["type"]; $filesize = $_FILES["file"]["size"]; // Verify file extension $ext = pathinfo($filename, PATHINFO_EXTENSION); // Verify file size - 5MB maximum $maxsize = 5 * 1024 * 1024; if ($filesize > $maxsize) { die("ERRO: Tamanho máximo de arquivo igual a 5MB."); } // Check whether file exists before uploading it if (file_exists("uploads/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " já existe na pasta."; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]); } } #fim do Arquivo print_r($fmsg); $executivo->setID($id); $executivo->setTitulo($titulo); $executivo->setCategoria($categoria); $executivo->setArquivo($filename); try { if ($action == "alterar") { if ($filename == "") { $executivo->setArquivo($file); } else { if (file_exists("uploads/" . $file)) { $path = 'uploads/' . $file; unlink($path); } } $executivo->update($executivo->getID(), $executivo->getTitulo(), $executivo->getCategoria(), $executivo->getArquivo()); $texto = "Atualizado com sucesso"; } else { $executivo->insert($executivo->getTitulo(), $executivo->getCategoria(), $executivo->getArquivo()); $texto = "Inserido com sucesso"; } } catch (PDOException $e) { echo 'ERRO: ' . $e->getMessage(); } } ?> <h4 class="header-title">Cadastro Downloads Executivos</h4> <form method="POST" enctype="multipart/form-data"> <div class="form-group"> <input type="text" id="action" name="action" hidden="true" value="<?php echo $action; ?>" > <label class="col-form-label">Título</label> <input class="form-control" type="text" name="titulo" value="<?php echo $titulo; ?>" > </div> <div class="form-group"> <label class="col-form-label">Categoria</label> <select class="form-control" name="categoria"> <option >Select</option> <option value="Executivo">Executivo</option> <option value="Legislativo">Legislativo</option> <option value="Judiciario">Judiciário</option> </select> </div> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text">Arquivo</span> </div> <div class="custom-file"> <input type="file" name="file"/> <a href="<?php echo "uploads/" . $file; ?>"><?php echo $file; ?></a> <input type="text" id="filetext" name="filetext" hidden="true" value="<?php echo $file; ?>" > </div> </div> <button class="btnPublicar" name="btnPublicar"><span>Publicar </span></button> </form> <?php echo $texto; ?> </div>  
      Essa e a codigo da classe
       
      <?php require_once 'Crud.php'; class Exe extends Crud { protected $table = 'exe'; private $arquivo; private $categoria; private $id; private $titulo; public function setArquivo($arquivo) { $this->arquivo = $arquivo; } public function getArquivo() { return $this->arquivo; } public function setCategoria($categoria) { $this->categoria = $categoria; } public function getCategoria() { return $this->categoria; } public function setID($id) { $this->id = $id; } public function getID() { return $this->id; } public function setTitulo($titulo) { $this->titulo = $titulo; } public function getTitulo() { return $this->titulo; } public function insert($titulo, $categoria, $arquivo) { try { $sql = "INSERT INTO $this->table (titulo, categoria, arquivo) VALUES (:titulo, :categoria, :arquivo)"; $stmt = DB::prepare($sql); $stmt->execute(array('titulo' => $titulo, 'categoria' => $categoria, 'arquivo' => $arquivo)); } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function update($id, $categoria, $titulo, $arquivo) { try { $sql = "UPDATE $this->table SET categoria = :categoria, titulo = :titulo, arquivo= :arquivo WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->execute(array('id' => $id, 'titulo' => $titulo, 'categoria' => $categoria, 'arquivo' => $arquivo)); } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } } ?>  
      Se alguem poder me orientar como ajustar agradeço!
    • Por rogarfil
      <div class="video-sec">
        <h4 class="heading-small">Mídias</h4>
        <div class="video-block">
        <ul class="nav nav-pills justify-content-center mb-4" id="pills-nav" role="tablist">      
        <?php
        // Atribui uma conexão PDO
        $conexao = Connection::getInstance();
        $controle_ativo = 2;
        //$controle_num_slide = 1;
        $sql = "SELECT * FROM db_post WHERE status=1 AND category='Mídia' ORDER BY created DESC LIMIT 3";
        $stm = $conexao->prepare($sql);
        $stm->execute();
        while($post = $stm->fetch(PDO::FETCH_OBJ)) {
          if($controle_ativo == 2) { ?>
            <li class="nav-item">
              <a class="nav-link active" id="nav-pills-01" data-toggle="pill" href="#<?=$post->post_id?>"><?=$post->title?></a>
            </li>
          <?php
            $controle_ativo = 1;
          } else {
          ?>
            <li class="nav-item">
              <a class="nav-link" id="nav-pills-02" data-toggle="pill" href="#<?=$post->post_id?>"><?=$post->title?></a>
            </li>
          <?php
            //$controle_num_slide++;
          }
        }
        ?>
      </ul>
      <div class="tab-content" id="nav-pills-content">      
        <?php
        // Atribui uma conexão PDO
        $conexao = Connection::getInstance();
        $controle_ativo = 2;
        $sql = "SELECT * FROM db_post WHERE status=1 AND category='Mídia' ORDER BY created DESC LIMIT 3";
        $stm = $conexao->prepare($sql);
        $stm->execute();
        while($post = $stm->fetch(PDO::FETCH_OBJ)) {
          if($controle_ativo == 2) { ?>
        <div class="tab-pane fade show active" id="<?=$post->post_id?>" role="tabpanel">
          <div class="row">
            <div class="col-sm-6">
              <div class="embed-responsive embed-responsive-16by9"> <!-- 21by9, 16by9, 4by3, 1by1 -->
                <iframe class="embed-responsive-item" src="<?=$post->url?>"></iframe>
              </div>
            </div>
            <div class="col-sm-6">
              <p class="display-5"><?=$post->content?></p>
              <p class="card-text">
                <small class="text-time">
                  <em>Publicado em <?=date('M,d',strtotime($post->created))?></em>
                </small>
              </p>
            </div>
          </div>
        </div>
          <?php
            $controle_ativo = 1;
          } else {
          ?>
        <div class="tab-pane fade" id="<?=$post->post_id?>a" role="tabpanel">
          <div class="row">
            <div class="col-sm-6">
              <div class="embed-responsive embed-responsive-16by9"> <!-- 21by9, 16by9, 4by3, 1by1 -->
                <iframe class="embed-responsive-item" src="<?=$post->url?>"></iframe>
              </div>
            </div>
            <div class="col-sm-6">
              <p class="display-5"><?=$post->content?></p>
              <p class="card-text">
                <small class="text-time">
                  <em>Publicado em <?=date('M,d',strtotime($post->created))?></em>
                </small>
              </p>
            </div>
          </div>
        </div>
          <?php
          }
        }
        ?>
      </div>
      Há aba ativa está perfeita quando clico na segunda ou terceira aba nada acontece (não abre), tenho que deixar dinâmico. Ainda pergunto existe uma maneira com javascript para ativar a aba e seu conteúdo.

    • Por kadu silva
      Boa Noite
       
      Estou Criando Um Site Para Um Cliente E Ele Deseja Colocar Um Sistema De Buscar.
      Já Criei Os Códigos Em Php E O Banco De Dados No Phpmyadmin. Porém, Agora Necessito De Ajuda Para Como Colocar Ele Dentro Do Site Funcionando.
      O Sistema De Pesquisa Durante A Fase De Teste, Estar Dando Tudo Certo, Faz A Pesquisa Certinho, Eu Só Não Sei Como Colocar Dentro Do Site Funcionando, Necessito De Muita Ajuda.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.