GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro com variáveis no PHP

Tags: #<Tag:0x00007f2b9c0ab5a8>

Olá,

Estou tendo problema para fazer um código em PHP funcionar.

O erro está na imagem:

Os códigos que não estou enchergando erro nenhum…:

conexao.php

<?php

global $con;

$con = mysqli_connect("localhost","root","","game","3308") or die("<br>Falha: )" . mysqli_connect_error());
	
if(!$con)
{
	echo "1: " . mysqli_connect_errno();
	echo "<br>2: " . mysqli_connect_error();
}
//mysqli_select_db($con,"game");

?>

funcoes.php

<?php

include "conexao.php";
//$conexao = mysqli_connect("127.0.0.1","root","","game","3308") or die("<br>Falha: )" . mysqli_connect_error());

function protect($stringFuncao)
{
	return mysqli_real_escape_string($con,$stringFuncao);
	//return mysqli_real_escape_string($con,strip_tags(addslashes($string)));
}

?>

register.php

<?php

include 'funcoes.php';
include 'conexao.php';
//connect();

$stringTela = "Hello";
protect($stringTela);

?>

Não encontro o erro…se alguém puder ajudar.

Muito obrigado.

1 - Aviso: Variável indefinida na linha 9. Provavelmente na linha 9 há o uso de variável não declarada (ou com nome diferente da declarada).

2 - Advertência: o método mysqli_real_scape_string() espera que parâmetro 1 seja do tipo mysqli, mas foi passado null na linha 9.

Resumo da ópera: você tem um problema na linha 9. O que há lá?

1 Curtida

Olá @Iohannes , muito obrigado por responder. Estou quebrando a cabeça com esse erro.

Segue uma imagem:

Não enchergo o erro.

Obrigado.

Por favor, para código, informe-o e não envie uma imagem, isso facilita a visualização/teste.
Agora sobre o erro. Você consultou a documentação do PHP?

1 - Variável indefinida: o parâmetro formal $con vem de onde já que a função só recebe o parâmetro $stringFuncao.

2 - A função mysqli_real_scape_string(mysqli $link, string $escape) espera:
2.1 - Um recurso link retornado por mysqli_connect() ou mysqli_init().
2.2 - Uma string para ser escapada, como NUL, \n, \r, ', ‘’ ou control Z.

Essas premissas são satisfeitas?

Fonte: PHP Manual - mysqli::real_scape_string

1 - Variável indefinida: o parâmetro formal $con vem de onde já que a função só recebe o parâmetro $stringFuncao .

2 - A função mysqli_real_scape_string(mysqli $link, string $escape) espera:
2.1 - Um recurso link retornado por mysqli_connect() ou mysqli_init() .
2.2 - Uma string para ser escapada, como NUL, \n, \r, ', ‘’ ou control Z.

Essas premissas são satisfeitas?

Sim. Estão satisfeitas.

A variável $con está declarada no arquivo ‘conexao.php’:

   <?php

        //global $con;

        $con = mysqli_connect('127.0.0.1:3308','root','','game') or die("<br>Falha: )" . mysqli_connect_error());
        //$bd = mysql_select_db($con/);

        if(!$con)
        {
        	echo "1: " . mysqli_connect_errno();
        	echo "<br>2: " . mysqli_connect_error();
        }
        //mysqli_select_db($con,"game");

        ?>

A função mysqli_real_escape_string(), está no arquivo ‘funcoes.php’:

<?php

include_once("conexao.php");

//$conexao = mysqli_connect("localhost","root","","game","3308") or die("<br>Falha: )" . mysqli_connect_error());

function Protect($stringFuncao)
{
	echo mysqli_real_escape_string($con,$stringFuncao);
	//return $stringFormatada;
	//return $stringRetorno;
	//return mysqli_real_escape_string($con,strip_tags(addslashes($string)));
}// $stringFuncao;

?>

A mensagem de erro:

Erro 1: a variável $con está declarada sim no arquivo ‘conexao.php’;
Erro 2: mysqli_real_escape_string, quando apago essa função o programa roda normalmente. Ela esta dando erro segundo a mensagem também.

Qualquer ajuda, obrigado!

O mesmo erro de antes, mas agora na linha 10 (do arquivo funcoes.php). Poste o código desse arquivo (o código, não a imagem) para analisarmos.

Segue o código:

<?php

include_once("conexao.php");

//$conexao = mysqli_connect("localhost","root","","game","3308") or die("<br>Falha: )" . mysqli_connect_error());

function Protect($stringFuncao)
{
	echo mysqli_real_escape_string($con,$stringFuncao);
	//return $stringFormatada;
	//return $stringRetorno;
	//return mysqli_real_escape_string($con,strip_tags(addslashes($string)));
}// $stringFuncao;

?>

A linha 10:

echo mysqli_real_escape_string($con,$stringFuncao);

Obrigado.

Pois é… há erro na função, conforme eu havia dito. Imprima o valor da variável $con, veja o que está vindo, imprima o valor da variável $stringFuncao e veja o que está vindo, pois o alerta indica que a função não está parametrizada corretamente, ou melhor está indicando que $con está retornando null - “parametro 1 devia ser mysqli, mas está recebendo null”. Como está chamando a função protect?

1 Curtida

É…a função “mysqli_connect()” não esta “gerando” um link para a conexão no banco. Os parâmetros estão certos pois testei muita coisa antes. O fato é que “mysqli_connect()” não está retornando a “conexão”.

conexao.php

?php

global $con;
if (isset($con))
{


$con = mysqli_connect("127.0.0.1","root","","game","3308");//or die("<br>Falha: )" . mysqli_connect_error());
//$bd = mysql_	select_db($con/);
//echo $con;	
//echo "certinho";
}
if(!$con)
{
	echo "1: " . mysqli_connect_errno();
	echo "<br>2: " . mysqli_connect_error();
}
//mysqli_select_db($con,"game");

?>

Não sei como resolver. Porque não esta sendo gerado a conexão?

Obrigado por qualquer ajuda.

Eu teste aqui a conexão, mudando o usuário, a senha e o nome do banco de dados (para uma base de dados que tenho) e funcionou perfeitamente. Logo, ou é a seu usuário, senha ou banco que está sendo informado errado.

<?php
	//global $con;

	$con = mysqli_connect('127.0.0.1','root','*****','PetShop') or die("<br>Falha: )" . mysqli_connect_error());
	
	if(!$con)
	{
		echo "1: " . mysqli_connect_errno();
		echo "<br>2: " . mysqli_connect_error();
		
	}else{
		echo "<p>Conectado com sucesso!</p>";
	}
?>

Rodando…

image

Olá, Aqui não resolveu. Eu estava usando o mysql na porta 3308 e estava desativado o mariadb na porta 3307. Eu então ativei o mariadb na porta 3307.

Acontece que aparentemente nenhum dos dois banco de dados está retornando uma variável $con válida e eu não sei o motivo. Segue o código do script da conexão com o banco de dados:

conexao.php

<?php

$con = NULL;
//isset($con);
$con = mysqli_connect("localhost:3307","root","") or die("<br>Falha: )". mysqli_connect_error());
mysqli_select_db($con,"game") or die(mysqli_error($con));

//echo $con;	

if(!$con)
{
	echo "1: " . mysqli_connect_errno();
	echo "<br>2: " . mysqli_connect_error();
}

?>

funcoes.php

<?php

include 'conexao.php';

function Protect($stringFuncao)
{
	echo $stringFuncao;
	mysqli_real_escape_string($con,$stringFuncao);
	//return mysqli_real_escape_string($con,strip_tags(addslashes($string)));
}

?>

register.php

<?php

//include "conexao.php";
include "funcoes.php";
//connect();

$stringTela = "Hello";
Protect($stringTela);

?>

Erro (Variável de conexão “inválida”):

Se alguém puder ajudar. Muito obrigado.

Olá, estou colocando mais informações no tópico pois ainda não consegui resolver meu problema…

A varíável de “conexão” do banco de dados não é reconhecida.

conexao.php

<?php

$link = mysqli_init();
$con = mysqli_real_connect($link,"127.0.0.1","root","","game","3307") or die("<br>Falha:". mysqli_connect_error());	
echo $con;
?>

funcoes.php

<?php

include "conexao.php";

function Protect($stringFuncao)
{
	echo $stringFuncao;
	mysqli_escape_string($con,$stringFuncao);
	//return mysqli_real_escape_string($con,strip_tags(addslashes($string)));
}

?>

register.php

<?php

include "funcoes.php";
//connect();

$stringTela = "Hello";
Protect($stringTela);

?>

Erros:

Se alguém tiver idéia do que possa ser…

Muito obrigado.

//