• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Hipnoted

[Resolvido] Warning: mysql_num_rows()

14 mensagens neste tópico

Estou a tentar seguir alguns scripts de logins, mesmo aqui do fórum mas dá-me sempre o mesmo erro na mesma função. Tenho este código:

$login = $_POST['login'];
$senha = md5($_POST['senha']);

$ligacao = mysql_connect('localhost','root','vertrigo') or die ("Impossível ligar à base de dados");

mysql_select_db('db_users', $ligacao) or die ("Cannot select database");

$sql = "SELECT nome, pass FROM users WHERE nome = '$login' AND pass = '$senha'";

$resposta = mysql_query($sql, $ligacao);

$num = mysql_num_rows($resposta);

if($num != 0){
echo "Login feito com sucesso! <br />";
}
else{
echo "Nome ou password podem estar errados! <br />";
}

mysql_close($ligacao);

E dá o erro:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Programas\VertrigoServ\www\ttt\login.php on line 14

Sinceramente não sei mais que fazer, já vi muitos exemplo da mesma forma que estou a fazer.

PS: Não liguem à forma pouco segura como estou a fazer as coisas, eu sei que devo evitar o SQL injection entre outros mas isso é depois...  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

faz um echo ao $sql e ao $resposta... um dos dois tem dados errados...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

devias verificar a $resposta qq coisa como if($resposta)

porque o que o @ faz é apenas não imprimir o warning

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, o erro estava no nome da tabela. Sem querer acabei por dar o mesmo nome da tabela da base de dados, ou seja em vez de ser users é db_users.

Aqui fica:

<?php

$login = $_POST['login'];
$senha = $_POST['senha'];

$ligacao = mysql_connect("localhost","root","vertrigo") or die ("Impossível ligar à base de dados");

mysql_select_db("db_users", $ligacao) or die ("Cannot select database");

$sql = "SELECT nome, pass FROM db_users WHERE nome = '$login' AND pass = '$senha'";

$resposta = mysql_query($sql, $ligacao);

$num = mysql_num_rows($resposta);

if($num != 0){
echo "Login feito com sucesso! <br />";
}
else{
echo "Nome ou password podem estar errados! <br />";
}

mysql_close($ligacao);

?>

Obrigado.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou a tentar implementar isto no meu site mas dá o mesmo erro:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/paginas/Hipnoted/public_html/upload/login.php on line 14

O código é o seguinte:

$login = $_POST['login'];
$senha = $_POST['senha'];

$ligacao = mysql_connect("localhost","Hipnoted","xpto") or die ("Impossível ligar à base de dados");

mysql_select_db("Hipnoted_db_users", $ligacao) or die ("Cannot select database");

$sql = "SELECT nome, pass FROM db_users WHERE nome = '$login' AND pass = '$senha';";

$resposta = mysql_query($sql, $ligacao);

$num = mysql_num_rows($resposta);

if($num != 0){
echo "<br /><br /><center>Login feito com sucesso! </center><br />";
//sleep(3);
require_once("upload.html");
mysql_close($ligacao);
}
else{
echo "<br /><br /><center>Nome ou password podem estar errados! </center><br />";
echo "<center>Para voltar a fazer login clique <a href = index.html> aqui </a></center>";
mysql_close($ligacao);
}

Já fiz um echo a $sql e tá bem, o echo a $resposta não devolve nada será disso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

faz um echo mysql_error(); para mostrar o erro em causa. Os erros costumam ser bastante explicativos, por aí já te deves desenrascar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queres uma dica, se puderes, em vez de usares mysql_num_rows, usa a mysql_numrows

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acabei de testar isso , apenas modifiquei o $login e $senha para um valor definido no proprio php, e as informações relativas à bd, mas mantive o nome dos campos e tabela iguais

e funcionou tudo bem  sem qualquer erro  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

faz um echo mysql_error(); para mostrar o erro em causa. Os erros costumam ser bastante explicativos, por aí já te deves desenrascar.

Pois, realmente deu muito jeito. lol

acabei de testar isso , apenas modifiquei o $login e $senha para um valor definido no proprio php, e as informações relativas à bd, mas mantive o nome dos campos e tabela iguais

e funcionou tudo bem  sem qualquer erro  :)

Pois funcionou, eu é que estava a ser burro. Em vez de nomear uma coluna como "nome" nomeei "user"..  :-[  :wallbash:  :wallbash:

Mas já está a funcionar é o que interessa!  :D

Obrigado a todos!

Queres uma dica, se puderes, em vez de usares mysql_num_rows, usa a mysql_numrows

Já agora podes explicar qual é a diferença?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    Note:  For downward compatibility, the following deprecated alias may be used: mysql_numrows() 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora