Ir para conteúdo

Arquivado

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

davi gasparino 1987

Fatal error: FetchNextObject()

Recommended Posts

Boa tarde, desde já agradeço a ajudo. Eu tenho uma função que recebe um dado numérico referente a chave primaria de uma base, e seguindo esse código, a função remove da pasta imagens caso haja e exclui de outras bases de dados que pertença a chave primaria.

 

o grande problema que ocorre é que esta função foi feita a mais de seis meses atras e funcionou perfeitamente, inclusive ainda funciona no meu servidor offline de testes e em um plano de revenda de hospedagem UOL que eu possuo, o mesmo codigo funciona corretamente na locaweb também, porem instalei em uma hospedagem UOL e está dando o seguinte erro:

Fatal error: Call to a member function FetchNextObject() on a non-object in (/* endereço da pagina */)/pagina_class.php on line 83

 

Por ser um código que esta funcionando em outras hospedagens, fica mais complicado de entender o erro, sendo que verifiquei a versão do PHP, APACHE, da biblioteca adodb entre outras coisas, e não encontrei a causa.

 

Talvez seja algum vacilo meu, portanto agradeço a compreensão de todos, abraço.

 

 

CODIGO COMENTADO DA FUNÇÃO:
function excluir_pg($id){       //FUNÇÃO RECEBE O CODIGO DA PÁGINA PRINCIPAL (CHAVE PRIMARIA)
 
//QUERY PARA RETORNAR TODAS AS IMAGENS EXISTENTES QUE PERTENÇA A CHAVE PRIMARIA
    $img_p = "SELECT * FROM TBL_PAGINA P INNER JOIN TBL_CONTENT C ON P.PAG_CODIGO = C.P_COD 
    WHERE P.PAG_CODIGO = ".$id." AND C.P_TP = 1 AND C.CONT_TP = 2";
    $img1 = $this->con->banco->Execute($img_p);
//LAÇO QUE REMOVE AS IMAGENS REQUERIDAS DA QUERY
    while($p = $img1->FetchNextObject()){ 
        unlink("../paginas/".$p->CONT_CONTENT."");
        unlink("../paginas/min_".$p->CONT_CONTENT."");
    } 
 
// ESTA QUERY E LAÇO FAZEM ALGO SEMELHANTE POREM DA CHAVE PRIMARIA DAS PAGINAS CONTIDA DENTRO DA PAGINA PRINCIPAL
    $img_c = "SELECT * FROM tbl_categoria CC INNER JOIN TBL_CONTENT C ON CC.CAT_CODIGO = C.P_COD 
    WHERE CC.PAG_CODIGO = ".$id." AND C.P_TP = 2  AND C.CONT_TP = 2";
    $img2 = $this->con->banco->Execute($img_c);
    while($c = $img2->FetchNextObject()){ 
        unlink("../paginas/".$c->CONT_CONTENT."");
        unlink("../paginas/min_".$c->CONT_CONTENT."");
    }
 
//REMOVE DO BANCO AS PÁGINAS CONTIDAS DENTRO DA PAGINA PRINCIPAL
    $del_p = "DELETE P , C FROM TBL_PAGINA P INNER JOIN TBL_CONTENT C ON P.PAG_CODIGO = C.P_COD 
    WHERE P.PAG_CODIGO = ".$id." AND C.P_TP = 1 ";
    $this->con->banco->Execute($del_p);
 
//REMOVE DO BANCO AS CATEGORIAS CONTIDAS DENTRO DAS PAGINAS
    $del_c = "DELETE CC, C FROM TBL_CATEGORIA CC INNER JOIN TBL_CONTENT C ON CC.CAT_CODIGO = C.P_COD 
    WHERE CC.PAG_CODIGO = ".$id." AND C.P_TP = 2 ";
    $this->con->banco->Execute($del_c);
 
//REMOVE DO BANCO CATEGORIA DA PÁGINA
    $del_pc = "DELETE P, C FROM TBL_CATEGORIA C INNER JOIN TBL_PAGINA P ON P.PAG_CODIGO = C.PAG_CODIGO WHERE P.PAG_CODIGO = ".$id;
    $this->con->banco->Execute($del_pc);
 
//REMOVE DO BANCO AS PÁGINAS CONTIDAS DENTRO DA PAGINA PRINCIPAL
    $del_pg = "DELETE FROM TBL_PAGINA WHERE PAG_CODIGO = ".$id;
    $this->con->banco->Execute($del_pg);
 
//VERIFICA
    if($this->con->banco->Execute($del_p)&&$this->con->banco->Execute($del_c)&&$this->con->banco->Execute($del_pc)&&$this->con->banco->Execute($del_pg)){
        direciona("index.php?id=1&m=12"); 
    }else{ alerta('ERROR'); }
 
}   //FIM DA FUNÇÃO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então a consulta em $img_p gerou algum erro. Qual SGBD está usando? Essa classe de conexão que está usando foi feita por você ou é alguma pronta? Veja como exibir o último erro gerado pelo banco de dados (se for PDO, pode usar o método errorInfo() )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta certo vou tentar aqui, obrigado pela força! o estranho tbm que eu achei é que eu removi quase tudo deixando apenas a query de exclusão e tbm não foi, o mais estranho é que no mesmo sistema eu tenho outras funções muito semelhantes a esta e esta em perfeito funcionamento.

 

 

este é o meu codigo de conexão

 

require('adodb/adodb.inc.php');//biblioteca necessario para trabalhar com adodb
require('funcoes.php');
class conexao{
var $tipo_banco = "mysql";
var $servidor = "localhost"; // servidor
var $usuario = "root";
var $senha = "";
var $banco = "gamaweb";
function conexao(){ // metodo construtor
$this->banco = NewADOConnection($this->tipo_banco);
$this->banco->dialect = 3;
$this->banco->debug = false; // importante no momento de criação, desabilitar após término do projeto
$this->banco->Connect($this->servidor, $this->usuario, $this->senha, "gamaweb");
}
}
}
$con = new conexao();

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse foi o resultado:

 

string(137) "SELECT * FROM TBL_PAGINA P INNER JOIN TBL_CONTENT C ON P.PAG_CODIGO = C.P_COD WHERE P.PAG_CODIGO = 8 AND C.P_TP = 1 AND C.CONT_TP = 2"
Fatal error: Call to a member function FetchNextObject() on a non-object in /var/www/html/salvattorerevestimentos.com.br/web/adm/pagina_class.php on line 86

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.