Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Query sendo executada varias vezes

Estou passando uma tabela do Excel para o MySQL, nela estou usando dois metodos: Um para zerar o banco (Deletar todos os registros), que deve ser executada primeiro; e outra para enviar os dados. O problema é que a query de deletar está sendo executada várias vezes, e não está deixando inserir os dados no banco.

public function conectarBanco($referencia, $nome, $descricao, $departamento, $tipo, $marca, $genero, $sku, $cor, $tamanho, $codigoBarras, $altura, $largura, $comprimento, $peso, $valorUnitario, $estoque, $primeiraImagem, $segundaImagem, $terceiraImagem)
    {

        // Receber dados de conexão
        $servername = servername;
        $dbname = db;
        $username = username;
        $password = password;
        $insert = "INSERT INTO produtos(referencia, nome, descricao, departamento, tipo, marca, genero, sku, cor, tamanho, codigoBarras, altura, largura, comprimento, peso, valorUnitario, estoque, primeiraImagem, segundaImagem, terceiraImagem) VALUES ('" . html_entity_decode($referencia) . "', '" . html_entity_decode($nome) . "', '" . html_entity_decode($descricao) . "', '" . html_entity_decode($departamento) . "', '" . html_entity_decode($tipo) . "', '" . html_entity_decode($marca) . "','" . html_entity_decode($genero) . "', '" . html_entity_decode($sku) . "', '" . html_entity_decode($cor) . "', '" . $tamanho . "', '" . html_entity_decode($codigoBarras) . "', '" . $altura . "', '" . $largura . "', '" . $comprimento . "', '" . $peso . "', '" . $valorUnitario . "', '" . $estoque . "', '" . html_entity_decode($primeiraImagem) . "', '" . html_entity_decode($segundaImagem) . "', '" . html_entity_decode($terceiraImagem) . "')";


Para enviar para o banco:

        try {
            $conn = new PDO("mysql:host=$servername;dbname=$dbname; charset=UTF8", $username, $password);
            // set the PDO error mode to exception
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            // COMANDOS    $SQL = Insert        //    $update = Atualiza os dados já existentes


            $conn->exec($insert);


        } catch (PDOException $e) {
            echo("Erro de Conectividade. Verifique dados de conexão");
        }

        $conn = null;

    }

Para deletar do Banco:

public function deletarBanco()
    {
        $servername = servername;
        $dbname = db;
        $username = username;
        $password = password;


        $delete = "DELETE FROM produtos WHERE id > 0";


        try {
            $conn = new PDO("mysql:host=$servername;dbname=$dbname; charset=UTF8", $username, $password);
            // set the PDO error mode to exception
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            // COMANDOS    $SQL = Insert        //    $update = Atualiza os dados já existentes


        } catch (PDOException $e) {
            echo("Erro de Conectividade. Verifique dados de conexão");
        }






    }

No outo script, estou chamando as funções dessa forma:

 $deletar = new upload();
    $deletar->deletarBanco();

    $testes = new upload();
    $testes->conectarBanco($referencia, $nome, $descricao, $departamento, $tipo, $marca, $genero, $sku, $cor, $tamanho, $codigoBarras, $altura, $largura, $comprimento, $peso, $valorUnitario, $estoque, $primeiraImagem, $segundaImagem, $terceiraImagem);
2 respostas
solução!

Oi Everson, tudo bom?

Quantas vezes, exatamente, o método deletarBanco está sendo chamado?

Tenta adicionar no método um dump:

public function deletarBanco()
    {
        var_dump("entrou");    
        $servername = servername;
        $dbname = db;
        $username = username;
        $password = password;


        $delete = "DELETE FROM produtos WHERE id > 0";


        try {
            $conn = new PDO("mysql:host=$servername;dbname=$dbname; charset=UTF8", $username, $password);
            // set the PDO error mode to exception
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            // COMANDOS    $SQL = Insert        //    $update = Atualiza os dados já existentes


        } catch (PDOException $e) {
            echo("Erro de Conectividade. Verifique dados de conexão");
        }
    }

e conta quantas vezes entrou.

Na parte do código do outro script que você compartilhou eu não vejo nada de mais. Apenas que a instancia poderia ter sido reaproveitada. Algo como:

    $upload = new upload();
    $upload->deletarBanco();

    $upload->conectarBanco($referencia, $nome, $descricao, $departamento, $tipo, $marca, $genero, $sku, $cor, $tamanho, $codigoBarras, $altura, $largura, $comprimento, $peso, $valorUnitario, $estoque, $primeiraImagem, $segundaImagem, $terceiraImagem);

Já que ambos são instancia da mesma classe. Outro detalhe importante, toda classe deve começar com letra maiuscula por padrão da linguagem então tanto na declaração da classe quanto no uso deveriamos ter:

Upload

Abraço

Na verdade achei outra forma melhor de fazer, estou usando PHPExcel pra analisar planilhas. Como posso fazer upload de um arquivo para a pasta do script, em PDO?