Ir para conteúdo

POWERED BY:

Arquivado

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

paulocamargomello

PHP Fatal error: Call to a member function [function] on a non-object

Recommended Posts

Pessoal, o erro a seguir acontece para mim quando eu tento acessar uma pagina

 

 

PHP Fatal error: Call to a member function [function] on a non-object in line 233

 

$casos_ag_flag = $conn->Execute('select * from casos where caso_categoria = "'.$categoria_tipos[$i].'" order by caso_ag_razon_social');

while(!$casos_ag_flag->EOF()) {/*LINHA 233 */

...

}

 

 

Quando ele chega nesta linha que contem o while apresenta esta mensagem.

 

Algumas observações.

Eu tenho dois arquivos .php idênticas, exceto pela conexão com o banco de dados.

cada arquivo chama um banco de dados

os dois banco são idênticos.

um banco de dados é antigo e o outro (que funciona) é novo.

o banco de dados antigo, foi restaurado por backup de um arquivo xlsx (MSSQL)

se eu aponto para o banco novo, não ocorre o problema.

Alguém tem ideia do porque acontece este problema?

Att.,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você editou o erro apresentando não foi?

 

Seria esperado isso:

 

PHP Fatal error: Call to a member function EOF on a non-object in line 233

Sendo assim, $conn não é instância de uma classe ou, se for, é de uma classe que não possui o método EOF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Editei sim.

o erro real é este:

 

PHP Fatal error: Call to a member function EOF() on a non-object in E:\home\effie\Web\inscripcion\dashboard2010.php on line 304

 

este EOF() esta em uma classe incluida à este fonte que faz o seguinte:

 

class ADORecordSet_empty

{

var $fields = false;

var $EOF = true;

function MoveNext() {return;}

function RecordCount() {return 0;}

function FieldCount() {return 0;}

function EOF(){return TRUE;}

function Close(){return true;}

}

 

 

function EOF()

{

if( $this->_currentRow < $this->_numOfRows)

{

return false;

}

else

{

$this->EOF = true;

return true;

}

}

 

 

 

Estranho, quando eu utilizo o banco atual, nenhum erro acontece.

mas quando eu utilizo o banco de backup, que foi importado de um .xlsx, ai sim apresenta o erro.

 

 

Este método aparece varias vezes no código, ele é utilizado vários momentos, ele já fez este tipo de verificação antes desta linha pelo menos umas duas vezes...

Não consegui identificar o problema ainda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que prestei melhor atenção, inclusive no seu comentário sobre a linha 233 (e editei minha resposta anterior para refletir esse insight ^_^)

 

Mas enfim, mesmo assim, ainda vale a segunda observação feita. Você está chamando o método EOF fora de contexto.

 

Faça, antes do while:

 

var_dump( $casos_ag_flag );

E verifique se o retorno é uma instância de ADORecordSet_empty.

 

Se não for, então o método Execute não está retornando nada ou está retornando um objeto diferente dessa classe aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que era porque ele nao retornava nada....

mas agora estou com outro problema...

 

 

PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 64491521 bytes) in E:\home\effie\Web\inscripcion\dashboard2010.php on line 249

 

na linha 249:

if(is_null($caso_ag_razon_social) || ($caso_ag_razon_social == '')) $caso_ag_razon_social = 'Sem Agência';
echo '<tr><td class="phpmaker" style="padding-left:20px"><li><b>' .$caso_ag_razon_social. '</b> - ' .$totales_flags['Nombre_Caso']. '</td></tr>';  //LINHA 249

Notei no banco que algumas palavra no campo NOMBRE_CASO estão em formato diferente. acho que vou precisar utilizar o enconde para resolver este problema.

 

Eu removi exatamente este if, que segundo minha base, era desnecessário.

logo, o erro parou de funcionar.

cortei o mal pela raiz, mas ainda sim, não entendo porque ele apresentou o erro. rs.

até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples. Esse erro significa que o script precisa de mais memória do que foi atribuído à ele.

 

Procure por redundências, loops aninhados ou até mesmo script muuuuuuito longos e complexos que, que estejam utilizado muitas funções "fominhas" do PHP (a exemplo, as da biblioteca GD)

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.