Validation php Pdo function

Asked

Viewed 85 times

0

I have the function below that makes an Insert in table ESP35302_TMP but before inserting I need to do a validation in this table, if there is already the number of barcode I am inserting, if there is already need that I do not execute this function. Is there any way to validate this function ?

Code:

public function Inserir(Gtc $dados) {
    $this->conn->beginTransaction();
    try {
        $stmt = $this->conn->prepare(
                'INSERT INTO ESP35302_TMP (NrCodigoBarras,CdInscricao,NrSerie,NrNotaFiscal,NrPedido,NrOrdemCompra,NrTransporte,NrVolume,QtVolume,NrMarca,DsProduto,CdDestinatario,DsDestinatario,DsCidadeDestino,DsUFDestino,VlPesoTotalPedido,DtSeparacaoCarga,DsUsuario,NrBox,NrCarga,DtMovimento)
            VALUES(:NrCodigoBarras, :CdInscricao, :NrSerie, :NrNotaFiscal, :NrPedido, :NrOrdemCompra, :NrTransporte, :NrVolume, :QtVolume, :NrMarca, :DsProduto, :CdDestinatario, :DsDestinatario, :DsCidadeDestino, :DsUFDestino, :VlPesoTotalPedido, :DtSeparacaoCarga, :DsUsuario, :NrBox, :NrCarga, :DtMovimento)'
        );
        $stmt->bindValue(':NrCodigoBarras', $dados->getCdBarModif(), PDO::PARAM_INT);
        $stmt->bindValue(':CdInscricao', $dados->getCdRemetente(), PDO::PARAM_INT);
        $stmt->bindValue(':NrSerie', $dados->getNrSerie(), PDO::PARAM_INT);
        $stmt->bindValue(':NrNotaFiscal', $dados->getNrNotaFiscal(), PDO::PARAM_INT);
        $stmt->bindValue(':NrPedido', $dados->getNrNotaFiscal(), PDO::PARAM_INT);
        $stmt->bindValue(':NrOrdemCompra', $dados->getDsMarca(), PDO::PARAM_INT);
        $stmt->bindValue(':NrTransporte', date('dmY'), PDO::PARAM_INT);
        $stmt->bindValue(':NrVolume', $dados->getNrVolume(), PDO::PARAM_INT);
        $stmt->bindValue(':QtVolume', $dados->getQtVolume(), PDO::PARAM_INT);
        $stmt->bindValue(':NrMarca', $dados->getDsMarca(), PDO::PARAM_INT);
        $stmt->bindValue(':DsProduto', substr($dados->getRemetente(), 0, 20) . '_' . substr($dados->getDestinatario(), 0, 20), PDO::PARAM_INT);
        $stmt->bindValue(':CdDestinatario', $dados->getCdDestinatario(), PDO::PARAM_INT);
        $stmt->bindValue(':DsDestinatario', $dados->getDestinatario(), PDO::PARAM_INT);
        $stmt->bindValue(':DsCidadeDestino', $dados->getDsLocal(), PDO::PARAM_INT);
        $stmt->bindValue(':DsUFDestino', $dados->getDsUf(), PDO::PARAM_INT);
        $stmt->bindValue(':VlPesoTotalPedido', $dados->getQtPesoCubado(), PDO::PARAM_INT);
        $stmt->bindValue(':DtSeparacaoCarga', $dados->getDtSeparacaoCarga(), PDO::PARAM_INT);
        $stmt->bindValue(':DsUsuario', 'GDE', PDO::PARAM_INT);
        $stmt->bindValue(':NrBox', '1', PDO::PARAM_INT);
        $stmt->bindValue(':NrCarga', $dados->getNrCarga(), PDO::PARAM_INT);
        $stmt->bindValue(':DtMovimento', $dados->getDtSeparacaoCarga(), PDO::PARAM_INT);
        $stmt->execute();

        $this->conn->commit();
    } catch (Exception $e) {
        $this->conn->rollback();
    }
}
  • Just give a select with exists or count before inserting, no?

1 answer

0


I decided to stay like this, I don’t know if it’s the best way.

 $stmt = $this->conn->prepare('
            IF NOT EXISTS 
            (   SELECT 1 FROM ESP35302_TMP
                    WHERE ESP35302_TMP.CdInscricao = ' . $dados->getCdRemetente() . '
                     AND ESP35302_TMP.NrCodigoBarras = ' . $dados->getCdBarModif() . '
                     AND ESP35302_TMP.NrNotaFiscal = ' . $dados->getNrNotaFiscal() . '
            )
            BEGIN
                INSERT INTO ESP35302_TMP (NrCodigoBarras,CdInscricao,NrSerie,NrNotaFiscal,NrPedido,NrOrdemCompra,NrTransporte,NrVolume,QtVolume,NrMarca,DsProduto,CdDestinatario,DsDestinatario,DsCidadeDestino,DsUFDestino,VlPesoTotalPedido,DtSeparacaoCarga,DsUsuario,NrBox,NrCarga,DtMovimento)
                VALUES(:NrCodigoBarras, :CdInscricao, :NrSerie, :NrNotaFiscal, :NrPedido, :NrOrdemCompra, :NrTransporte, :NrVolume, :QtVolume, :NrMarca, :DsProduto, :CdDestinatario, :DsDestinatario, :DsCidadeDestino, :DsUFDestino, :VlPesoTotalPedido, :DtSeparacaoCarga, :DsUsuario, :NrBox, :NrCarga, :DtMovimento)
            END;
        ');

Browser other questions tagged

You are not signed in. Login or sign up in order to post.