Call to a member function fetch() on boolean on line 21

SQL

PHP

PDO

11/03/2020

Prezados bom dia,
acredito que esta pergunta foi respondida anteriormente, me perdoe pois preciso aprender para entender.. encontro dificuldades para resolver este erro descrito no titulo desta pergunta. segue o código abaixo:

3 Class saciab{
4
5	private $pdo;
6	public function __construct($dbname, $host, $user, $senha)
7	{
8	try{$this->pdo = new PDO("mysql:dbname=".$dbname.";host=".$host,$user,$senha);}
8	catch (PDOException $saciab) {echo "Erro com banco de dados ".$saciab->getMessage(); exit();}
10	catch (PDOException $saciab) {echo "Erro genérico ". $saciab->getMessage();}
11	}
12
13	// CCA.PHP
14		//Cadastro de Empresa//
15 public function cad_empresa ($rc,$cnpj_novo,$empresa,$natureza, $segmento,$funcionarios,$socios, $cep_novo,$endereco,$numero, $bairro,$municipio,$uf, $referencia,$telefone_emp_novo,$dt_abertura,$i_municipal,$i_estadual,$v_sanit)  
16	{
17	global $pdo;
18	$cmd = array();
19	$cmd = $this->pdo->query("INSERT INTO empresa (  rc ,cnpj ,empresa   ,natureza   ,segmento   ,funcionarios   ,socios,empresa_cep,empresa_endereco,empresa_numero,empresa_bairro,empresa_municipio,empresa_uf,empresa_referencia,empresa_telefone    ,abertura      ,i_municipal   ,i_estadual   ,v_sanit) 
20   VALUES ('$rc','$cnpj_novo','$empresa','$natureza','$segmento','$funcionarios','$socios','$cep_novo','$endereco'     ,'$numero'     ,'$bairro'     ,'$municipio'     ,'$uf'     ,'$referencia','$telefone_emp_novo','$dt_abertura','$i_municipal','$i_estadual','$v_sanit')");

21 $res = $cmd->fetch(PDO::FETCH_ASSOC);
	return true;
}


Não entendo e compreendo onde está o erro para resolver, prezados podem me ajudar por favor?
um forte abraço para todos.
Leonardo

Leonardo

Curtidas 0

Melhor post

Fellipe Tavares

Fellipe Tavares

13/03/2020

Fala, Leonardo!

Acredito que esteja tentando recuperar com a variável " $res " as colunas obtidas na consulta SQL. Se esse for seu objetivo, basta remover o PDO::FETCH_ASSOC que você passa em " fetch() ". Uma dica é consultar a documentação do PHP, pois algumas funções foram sofrendo alterações com novas versões, e algumas coisas implementadas seguem versões antigas.

Caso sua dúvida continue, comente novamente.

Abraços!
GOSTEI 1

Mais Respostas

Lucas Lima

Lucas Lima

11/03/2020

Opa Leonardo, o erro está em que após executar PDO->QUERY com a query INSERT INTO, a query é executada diretamente. Além de que o comando fetch é utilizado somente para a query SELECT para atribuir os valores da busca de uma forma específica a variável.

Então, caso queira validar se a saída foi TRUE, crie uma condicional com a variável que recebe o insert, no seu caso if($cmd==true)
GOSTEI 0
POSTAR