Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rioleal

[RESOLVIDO] Problemas com PDO

Recommended Posts

Pessoal,

Minha função, que antes funcionava, parou de funcionar. Simplesmente dá chamada para um membro non object.

 

A função conectar (listada abaixo) não dá erro:

class conexao {

    public $conec;

    public function conectar() {
        $dns = 'mysql:host=' . HOST . ';dbname=' . BANCO;
        //$this->conexao = new mysqli(HOST, USER, PASS, BANCO);

        try {
            $this->conec = new PDO($dns, USER, PASS);
            $this->conec->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $ex) {
            return 'Erro: ' . $ex->getMessage();
        }
    }

    public function desconectar() {
        //$this->conexao->close();
        $this->conec = null;
    }

}

E a função de executar uma pesquisa no banco (listada abaixo) dá erro:

class comando {

    public function executar($sql) {
        $con = new conexao();
        $con->conectar();

        try {
            $exec = $con->conec->query($sql);
            $exec->execute();

            if ($exec->rowCount() > 0) {
                return $exec->fetchAll(PDO::FETCH_OBJ);
            }
        } catch (PDOException $ex) {
            echo "<script>alert('Erro ao tentar executar a query: " . $ex->getMessage() . "');</script>";
        }
    }

}

O PHP está acusando erro nesta linha:

$exec = $con->conec->query($sql);

Mas antes funcionava e vários outros sites que fiz estavam funcionando, agora tenho que atualizar todos os clientes que coloquei este código. Podem me ajudar?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A conexão deve ter falhado, o que não retorna um objeto. Por isso o erro

Deve estar caindo no catch(). Dê um echo no erro em vez de apenas retorná-lo (afinal, você nem trata o retorno)

 

Faça debug da conexão com PDO

Veja:

http://forum.imasters.com.br/topic/542539-atencao-orientacoes-e-regras-do-forum-de-php/

http://php.net/manual/pt_BR/pdo.construct.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, é erro de conexão mesmo.

 

Coloquei um echo e apareceu o erro: "Could not find driver".

 

Já habilitei o php_mysql, php_pdo_mysql, php_oci, php_pdo_oci e nada.

 

Estou utilizando o mysql. Vou continuar a buscar na internet, mas se alguém puder me ajudar, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o que você falou, mas nada.

Abaixo tem um print de várias telas minhas.

A primeira é do phpinfo(), que está dizendo que os drivers PDO não estão instalados (acredito ser este o problema;

A segunda imagem é da lista de extensões do Wamp;

E a terceira é do php.ini. Podem ver que as dll que eu preciso estão habilitadas.

2el6yqv.jpg

Vou tentar baixar o PHP novamente para tentar reinstalar os drivers do PDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Impressão minha ou você não passou o DNS para a conexão?

DNS não, DSN :)

De fato, faltou mesmo. Pode ser um problema também.

 

 

 

E esse Wamp aí é outro problema

Odeio pacotes e nunca recomendo usá-los.

Recomendo sempre o Servidor Nativo do PHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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