Ir para conteúdo

Arquivado

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

Bruno Carazato

Vazio ao fazer consulta MySQL

Recommended Posts

Olá, estou tentando fazer uma consulta no meu banco de dados porém nao tenho resultados se eu utilizo o codigo:

<?php
if (!isset($_GET['u'])) { die(); }
$username = mysql_real_escape_string($_GET['u']);
$con = mysql_connect("host","user","pw") or die('Could not connect: ' . mysql_error());
mysql_select_db("dbname", $con) or die();
$result = mysql_query(sprintf("SELECT * FROM members WHERE name = '%s'", $username));
$row = mysql_fetch_object($result);
echo $row->member_group_id; 
?>

Porém se eu consulto direto com o nome do usuario para testar, exemplo 'admin':

<?php
if (!isset($_GET['u'])) { die(); }
$username = mysql_real_escape_string($_GET['u']);
$con = mysql_connect("host","user","pw") or die('Could not connect: ' . mysql_error());
mysql_select_db("dbname", $con) or die();
$result = mysql_query(sprintf("SELECT * FROM members WHERE name = 'admin'"));
$row = mysql_fetch_object($result);
echo $row->member_group_id; 
?>

Ai eu tenho o id que desejo, no caso 4.

Alguma ideia do que pode estar havendo de errado?

 

OBS: Nos dois casos utilizei a chamada

 

file.php?u=admin

Compartilhar este post


Link para o post
Compartilhar em outros sites
$result = mysql_query(sprintf("SELECT * FROM members WHERE name LIKE '%s'", $username));

Continua não funcionando, porém se eu usar

 

$result = mysql_query(sprintf("SELECT * FROM members WHERE name LIKE 'admin'"));

 

funciona...

 

Acho que o erro ta relacionado com a parte

$username = mysql_real_escape_string($_GET['u']);

Só não consigo entender o porque

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Depende do retorno esperado....

$result = mysql_query(sprintf("SELECT * FROM members WHERE name LIKE '%$username%' ",));

Funcionou, porém agora para qualquer valor que coloco na consulta mesmo que o usuario nao exista, o echo mostra um 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja sobre o LIKE e como pode lhe ser satisfatório no resultado de sua busca.

"O like deve ser usado quando não pretendemos buscar valores exatos"

 

eu quero valor exato, quero que onde o "name" for igual $username, chame o id...

porém estou com o problema que mencionei no tópico... De qualquer forma obrigado pela atencao

 

 

@EDIT

 

Talvez possa existir a possibilidade do GET estar pegando e atribuindo alguma sujeira à variavel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê um echo em $username e veja como ela retorna

Não retornava nada, eu ja havia feito isso.. experimentei remover 'mysql_real_escape_string' e agora está funcionando perfeitamente,

Duvida? Agora perdi a proteção que o 'mysql_real_escape_string' me proporcionava?

 

@EDIT

 

o code ficou

<?php
if (!isset($_GET['u'])) { die(); }
$username = $_GET['u'];
$con = mysql_connect("host","user","pw") or die('Could not connect: ' . mysql_error());
mysql_select_db("dbname", $con) or die();
$result = mysql_query(sprintf("SELECT * FROM members WHERE name = '$username'"));
$row = mysql_fetch_object($result);
echo $row->member_group_id; 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O fato de estar usando mysql_real_escape_string ou não já não garante mais sua segurança;

 

Veja que o tio Beraldo diz em:

 

funções mysql_* estão obsoletas desde o PHP 5.5. Prefira usar MySQLi ou PDO. Veja mais aqui:http://www.ultimatep...r-funcoes-mysql

 

Legal, to lendo aqui sobre o PDO

<?php
if (!isset($_GET['u'])) { die(); }
$username = $_GET['u'];
define( 'MYSQL_HOST', 'hostmysql.com' );
define( 'MYSQL_USER', 'userdb' );
define( 'MYSQL_PASSWORD', 'pwdb' );
define( 'MYSQL_DB_NAME', 'namedb' );
try
{
    $PDO = new PDO( 'mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DB_NAME, MYSQL_USER, MYSQL_PASSWORD );
	$sql = "SELECT * FROM members WHERE name = '$username'";
	$result = $PDO->query( $sql );
	$rows = $result->fetchAll();
	print_r( $rows->member_group_id );
}
catch ( PDOException $e )
{
    echo 'Erro ao conectar com o MySQL: ' . $e->getMessage();
}
?>

Isso deveria funcionar?

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.