Ir para conteúdo
Fórum Script Brasil
  • 0

Erro mysqli_query() expects parameter 1 to be mysqli, null given in


CriandoBits

Pergunta

Estou há dias tentando entender o motivo do erro "mysqli_query() expects parameter 1 to be mysqli, null given in" no meu projeto.

Classe utilizada (arquivo conexao.php):

class Funcoes {
     
    public $servidor = 'localhost';
    public $usuario = 'meu_user';
    public $senha = 'minha_senha';    
    public $bd = 'meu_bd';    
    
    public function cnx()
    {    
        $link = mysqli_connect($this->servidor, $this->usuario, $this->senha, $this->bd);    
        return $link;                
    }

}

Arquivo com o erro:

    include ($_SERVER['DOCUMENT_ROOT']."/_pg/conexao.php"); 
 
     $obj = new Funcoes();
     $link = $obj->cnx();           
           
    function abreLink($descricao) {
        
        $query = mysqli_query($link, "SELECT * FROM links WHERE descricao='$descricao'");    
        
        while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
            $url = $row['link'];        
        }          
        return $url;
    } 
 }

 

Alguém poderia dar uma luz?!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu tive que fazer várias modificações para testar esse código. O mais problemático foi esse daqui:

function abreLink($descricao) {
     $query = mysqli_query($link, "SELECT * FROM links WHERE descricao='$descricao'");    
     while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {$url = $row['link'];}          
     return $url;} 

a variável $url da última linha não tem nenhum valor

a variável $url da penúltima linha pode receber vários valores, vai prevalecer a última.

a variável $link não tem nenhum valor

Esse é o famoso capítulo da visibilidade da variável, eu levei 20 anos para entender o problema. O fato da variável estar definida dentro de um mesmo módulo  não quer dizer que todo mundo consegue enxergá-la. Outro problema que eu não consegui resolver foi o mysqli_fetch_array( ), eu não consegui usar.

O conceito de visibilidade é importante para administrar qualquer tipo de linguagem (HTML, JavaScript, CSS, PHP, Laravel) e mais ainda no Detran (eles não vão liberar o seu CNH se você não dominar a visibilidade).

A seguir o código que eu usei para testar:

<?php
class Funcoes {
	 public $servidor = 'localhost';
	 public $usuario ='root'; //'meu_user';
	 public $senha = ''; // 'minha_senha';    
	 public $bd = 'astudy'; //'meu_bd';    
	 public function cnx()	 {    
		 $link = mysqli_connect($this->servidor, $this->usuario, $this->senha, $this->bd);    
		 return $link;}}
// echo $_SERVER['DOCUMENT_ROOT']."/wamp64/www/astudy/menu.php";
$obj = new Funcoes();
$link = $obj->cnx();           	
function abreLink($link,$descricao){		 
	$query = mysqli_query($link, "select * from tblinks where descricao='$descricao'");
	$urls = $query->fetch_array(MYSQLI_ASSOC);        
	return var_dump($urls);}
$teste=abreLink($link,"beterraba");



 

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...