Ir para conteúdo

POWERED BY:

Arquivado

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

edilson_alvarenga

Erro -> mysql_num_rows() expects

Recommended Posts

Alguém poderia me ajudar, estou tentando criar um login usuário e senha.

 

 

Notice: Undefined index: username in C:\siteweb\login.php on line 9

Notice: Undefined index: senha in C:\siteweb\login.php on line 10

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\siteweb\login.php on line 15

Usuário não encontrado!

Voltar

Warning: mysql_close() expects parameter 1 to be resource, object given in C:\siteweb\login.php on line 40

 

 

Codigo:

 

index.html

 

<html>

<body>
<form method="POST" action="login.php">
<p align="center">Nome de usuário: <input type="text" name="username" size="10"></p>
<p align="center">Senha: <input type="password" name="senha" size="10"></p>
<p align="center"><input type="submit" value="Enviar" name="enviar"></p>
</form>
</body>
</html>
login.php
<?php
// obtém os valores digitados
$username = $_POST["username"];
$senha = $_POST["senha"];
// acesso ao banco de dados
include "conecta_mysqli.inc";
$resultado = mysql_query("SELECT * FROM usuarios where username='$username'");
$linhas = mysql_num_rows ($resultado);
if($linhas==0) // testa se a consulta retornou algum registro
{
echo "<html><body>";
echo "<p align=\"center\">Usuário não encontrado!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
echo "</body></html>";
}
else
{
if ($senha != mysql_result($resultado, 0, "senha")) // confere senha
{
echo "<html><body>";
echo "<p align=\"center\">A senha está incorreta!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
echo "</body></html>";
}
else // usuário e senha corretos. Vamos criar os cookies
{
setcookie("nome_usuario", $username);
setcookie("senha_usuario", $senha);
// direciona para a página inicial dos usuários cadastrados
header ("Location: pagina_inicial.php");
}
}
mysql_close($conexao);
?>
conecta_mysqli.inc
<?php
$conexao = mysqli_connect ("localhost", "root", "");
mysqli_select_db ($conexao, "bdusuarios");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho.

O seu erro está dizendo que os valores não existem.

Tenta dar um var_dump($_POST) na sua página login.php e vê o que aparece.

Esse comando vai mostrar tudo que está vindo do formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi...

 

array(3) { ["username"]=> string(0) "" ["senha"]=> string(0) "" ["enviar"]=> string(6) "Enviar" }
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\siteweb\login.php on line 11

Usuário não encontrado!

Voltar

Warning: mysql_close() expects parameter 1 to be resource, object given in C:\siteweb\login.php on line 36

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo assim

 

array(3) { ["username"]=> string(3) "edi" ["senha"]=> string(2) "22" ["enviar"]=> string(6) "Enviar" }
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\siteweb\login.php on line 11

Usuário não encontrado!

Voltar

Warning: mysql_close() expects parameter 1 to be resource, object given in C:\siteweb\login.php on line 36

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esses erros estão todos descritos neste artigo, mais precisamente aqui e aqui (é outra mensagem de erro, mas a causa é a mesma)

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também a maneira como você está adicionando o usuário na consulta é arriscada, pois pode ocorrer SQL Injection.

 

Prefira filtrar as variáveis antes de adicioná-las na consulta.

 

Filtrando e validando dados no PHP com filter_var()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho pouco conhecimento em PHP.

 

Modifiquei o codigo.

Passo para este erro.

 

array(3) { ["username"]=> string(2) "ee" ["senha"]=> string(2) "sa" ["enviar"]=> string(6) "Enviar" }
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\siteweb\login.php on line 11
Query was empty

 

 

<?php
var_dump($_POST);
// obtém os valores digitados
$username = $_POST["username"];
$senha = $_POST["senha"];
// acesso ao banco de dados
include "conecta_mysqli.inc";
$resultado = mysql_query("SELECT * FROM usuarios where username='$username'");
$linhas = mysql_num_rows ($resultado);
// verificação de erro
$exec = mysql_query( $resultado ) or die ( mysql_error() );
if($linhas==0) // testa se a consulta retornou algum registro
{
echo "<html><body>";
echo "<p align=\"center\">Usuário não encontrado!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
echo "</body></html>";
}
else
{
if ($senha != mysql_result($resultado, 0, "senha")) // confere senha
{
echo "<html><body>";
echo "<p align=\"center\">A senha está incorreta!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
echo "</body></html>";
}
else // usuário e senha corretos. Vamos criar os cookies
{
setcookie("nome_usuario", $username);
setcookie("senha_usuario", $senha);
// direciona para a página inicial dos usuários cadastrados
header ("Location: pagina_inicial.php");
}
}
mysql_close($conexao);
?>
Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O parâmetro de mysql_query é a string SQL. Você está passando $resultado, que é o retorno de mysql_query.

Aliás, não entendi por que você está tentando executar mysql_query duas vezes...

 

Apenas faça isto:

 

$resultado = mysql_query("SELECT * FROM usuarios where username='$username'") or exit(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou pegando os exemplo do livro desenvolvendo websites com PHP, e está assim lá, mas alterei como vc passou e retornou com erro, pelo que vi é na base da dados.

 

array(3) { ["username"]=> string(2) "ee" ["senha"]=> string(2) "sa" ["enviar"]=> string(6) "Enviar" } No database selected

 

segue as alterações.

 

<?php

var_dump($_POST);
// obtém os valores digitados
$username = $_POST["username"];
$senha = $_POST["senha"];
// acesso ao banco de dados
include "conecta_mysqli.inc";
$resultado = mysql_query("SELECT * FROM usuarios where username='$username'") or exit(mysql_error());
//$resultado = mysql_query("SELECT * FROM usuarios where username='$username'");
//$linhas = mysql_num_rows ($resultado);
// verificação de erro
$exec = mysql_query( $resultado ) or die ( mysql_error() );
if($linhas==0) // testa se a consulta retornou algum registro
{
echo "<html><body>";
echo "<p align=\"center\">Usuário não encontrado!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
echo "</body></html>";
}
else
{
if ($senha != mysql_result($resultado, 0, "senha")) // confere senha
{
echo "<html><body>";
echo "<p align=\"center\">A senha está incorreta!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
echo "</body></html>";
}
else // usuário e senha corretos. Vamos criar os cookies
{
setcookie("nome_usuario", $username);
setcookie("senha_usuario", $senha);
// direciona para a página inicial dos usuários cadastrados
header ("Location: pagina_inicial.php");
}
}
mysql_close($conexao);
?>
e a conexão com a base
<?php
$conexao = mysqli_connect ("localhost", "root", "");
mysqli_select_db ($conexao, "bdusuarios");
?>
Agradeço a atenção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou pegando os exemplo do livro desenvolvendo websites com PHP, e está assim lá, mas alterei como você passou e retornou com erro, pelo que vi é na base da dados.

Se o livro diz pra usar funções mysql_*, você já está começando errado, usando material obsoleto.

Pense bem se vale a pena continuar com esse livro.

funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/

 

 

No database selected

Diz que o banco de dados não foi selecionado

Verifique se usou mysql_select_db e se a chamada gerou erro (pode usar mysql_error nessa linha também)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, tinha este livro guardado a muito tempo, que pena.

Mas que começa de forma certa.

 

Aterei a codigo com meu pouco conhecimento para mysqlI com o artigo.

Esta com este erro agora.

 

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\siteweb\login.php on line 17

 

Segue o codigo.

 

<?php

$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'bdusuarios';
// conexão e seleção do banco de dados
$con = mysqlI_connect($host, $user, $pass, $db);
// executa a consulta
$sql = "SELECT * FROM usuarios ORDER BY username";
$res = mysqli_query($con, $sql);
$exec = mysqli_query( $res ) or die ( mysql_error() );
if($linhas==0) // testa se a consulta retornou algum registro LOCAL DO ERRO
{
echo "<html><body>";
echo "<p align=\"center\">Usuário não encontrado!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
echo "</body></html>";
}
else
{
if ($senha != mysql_result($resultado, 0, "senha")) // confere senha
{
echo "<html><body>";
echo "<p align=\"center\">A senha está incorreta!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
echo "</body></html>";
}
else // usuário e senha corretos. Vamos criar os cookies
{
setcookie("nome_usuario", $username);
setcookie("senha_usuario", $senha);
// direciona para a página inicial dos usuários cadastrados
header ("Location: pagina_inicial.php");
}
}
mysqli_close($con);
?>
Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente interpretar as mensagens de erro. Elas geralmente te dizem qual é o problema

Ali está escrito que mysqli_query exige 2 parâmetros, mas você só passou um.

 

É necessário passar o link de conexão e a SQL a ser executada

 

Veja este meu artigo sobre como migrar de MySQL para MySQLi

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você teria mas alguma e algum livro atualizado para estudo?

O meu Curso ULTIMATE PHP 2.0 foi atualizado no final de 2015, incluindo as novidades do PHP 7.

 

 

Você pode começar lendo o Guia de Dicas e Fundamentos de PHP, que é gratuito

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.