Ir para conteúdo

Arquivado

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

marcelobbt

Fatal error: Call to a member function fetch_all() on a non-object

Recommended Posts

Estava tentando montar um modelo MVC, mas na hora de criar a tabela de modelo ao executá-la da o seguinte erro:

 

Fatal error: Call to a member function fetch_all() on a non-object in ...[/size]\Usuario.class.php on line xx[/size]

 

onde xx é a linha referente a [/size]$lista = $resultado->fetch_all(MYSQLI_ASSOC);

 

abaixo a classe Usuario:

class Usuario  {				/*		* Método criado para listar os usuários existentes na tabela de usuários do banco de dadoss.		*/		public function listar($condicoes = array()) {			// cria uma conexão usando a configuração "padrao" da classe Config			$db = DB::criar('padrao');			//Monta o select			$sql = "select * from usuario";			// monta o Where de acordo com a lista de condições.			// Funciona apenas com o operador = (depois aprimorar para outros operadores).			$where = array();			foreach($condicoes as $campo => $valor) {				$where = "{$campo} = {$valor}";			}						if ($where != array()) {				$where = " where " . implode(' and ', $where);			} else {				$where = '';			}			//Junta o where no Select			$sql .= $where;						//Executa o SQL e retorna a lista de usuarios        	$resultado = $db->query($sql);        	$lista = $resultado->fetch_all(MYSQLI_ASSOC);        	$resultado->free();        	        	return $lista;        }}

Será que alguém me da uma luz de como solucionar este erro?

 

 

Alguém pode me explicar como corrigir o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcelo, não de up no tópico, isso além de terrivelmente ridículo é contra as regras do fórum.

 

Quanto a sua questão, o problema é simples: A query é inválida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESerra, desculpe pelo "up", não foi minha intenção, mas acredite ou não, sua frase me deu uma luz e fiz as correções. Abaixo a classe corrigida:

<?php
	/*
	* Classe modelo de usuario.
	* Tem o objetivo de conectar ao banco de dados recuperar, inserir, alterar e apagar os dados dos usuários existentes lá.
 	*/
	class Usuario  {
		
		/*
		* Método criado para listar os usuários existentes na tabela de usuários do banco de dadoss.
		*/
		public function listar($condicoes = array()) {
			// cria uma conexão usando a configuração "padrao" da classe Config
			$db = DB::criar('padrao');
			//Monta o select
			$sql = "select * from usuario";
			// monta o Where de acordo com a lista de condições.
			// Funciona apenas com o operador = (depois aprimorar para outros operadores).
			//$this->condicoes = $condicoes;
			
			$where = array();
			
			$i = 0;
			foreach($condicoes as $campo => $valor) {
				$where[$i] = "{$campo} = '{$valor}'";
				$i ++;
			}
			
			if ($where != array()) {
				$where = " where " . implode(' and ', $where);
			} else {
				$where = '';
			}
			
			//Junta o where no Select
			$sql .= $where;
			
			//Executa o SQL e retorna a lista de usuarios
        	$resultado = $db->query($sql);
        	$lista = $resultado->fetch_all(MYSQLI_ASSOC);
        	$resultado->free();
        	
        	return $lista;
        }
        
        /*
        * Método criado para encontrar um registro usando seu ID.
        * Usa o  método listar para isso.
        */
    	public function encontrar($id) {
        	$condicao = array('id' => $id);
        	$item = self::listar($condicao);
        	return $item[0];
    	}
    	
    	//incluir outros métodos (Editar, INserir e Apagar)
 
	}
?>

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.