rioleal 0 Denunciar post Postado Fevereiro 1, 2016 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
Beraldo 864 Denunciar post Postado Fevereiro 1, 2016 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
rioleal 0 Denunciar post Postado Fevereiro 1, 2016 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
Beraldo 864 Denunciar post Postado Fevereiro 1, 2016 Veja no phpinfo().Lá está tudo.Confira o caminho do php.ini que está sendo carregado. Talvez você tenha dois e esteja mexendo no errado. Compartilhar este post Link para o post Compartilhar em outros sites
rioleal 0 Denunciar post Postado Fevereiro 1, 2016 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. Vou tentar baixar o PHP novamente para tentar reinstalar os drivers do PDO. Compartilhar este post Link para o post Compartilhar em outros sites
BoinaVerde 16 Denunciar post Postado Fevereiro 1, 2016 Impressão minha ou você não passou o DNS para a conexão? Compartilhar este post Link para o post Compartilhar em outros sites
rioleal 0 Denunciar post Postado Fevereiro 1, 2016 Resolvido o problema do PDO, Desinstalei o Wamp, o MySql e o PHP. Reinstalei tudo e o PDO agora é reconhecido. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 1, 2016 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