Ir para conteúdo

POWERED BY:

Arquivado

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

Matheus Brito

[Resolvido] checar se chegou ao eof

Recommended Posts

Pessoal preciso saber se uma consulta chegou ao eof, como faço isso sem usar o adodb?

 

A consulta é um sql que busca o nome de usuario. Dai quero testar se ele axou o usuario como faria?

 

Acho que não pensei direito, parece ser simples a solução.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matheus Brito,

 

A função mysql_fetch_row() é uma das funções para receber a consulta do banco de dados.

Essa (como outras) pega os dados da linha atual de sua consulta e aponta para a próxima linha, para que ao chamar esta funcâo novamente ela retorne a proxima linha, caso seja a ultima linha, o valor para a proxima é NULL.

 

Então o correto eh utilizar a seguinte sintaxe:

 

while($resultado = mysql_fetch_row($query)) { // desse jeito, o while irá parar assim que mysql_fetch_row() retornar NULL.
   print_r($resultado);
}

 

procure também por funcoes como mysql_fetch_array(), mysql_fetch_object().

 

 

Espero ter ajudado.

 

 

This is it!

 

Vinicius Cainelli

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma ligeira correção: mysql_fetch_* retornam FALSE ao fim da iteração. Quem retorna NULL é mysqli_result::fetch()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma ligeira correção: mysql_fetch_* retornam FALSE ao fim da iteração. Quem retorna NULL é mysqli_result::fetch()

 

Correto.

 

Não utilizo essa função faz muito tempo. Frameworks fazem isso por mim!

 

 

Valew.

 

 

This is it!

 

Vinicius Cainelli

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok entendi a explicação mas como vou encaixar um if ai???

 

$sql = mysql_query("select login from Usuario where login='{$u->login}'");
if() // quero testar aqui se encontrou o login antes de chegar ao fim

 

Abs

 

Deixa eu postar o código talvez fique mais fácil para eu entender quando alguem postar alguma coisa.

 

public function doLogin($objUsuario){

		$mysql = mysql_pconnect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
        mysql_select_db(DATABASE_NAME);
		
		$u = new UsuarioVO();
		$u->login = $objUsuario['login'];
		$u->pass = $objUsuario['pass'];
		
		$sql = mysql_query("select login from Usuario where login='{$u->login}'");
		$retorno['login'] = null;
		$retorno['mensagem'] = null;
		if(){
			$u->pass = md5($u->pass);
			$sql1 = mysql_query("select idUsuario from Usuario where login='{$u->login}' and pass= '{$u->pass}'");
			//while($row = mysql_fetch_array($sql1));
			if(){ // Aqui é que preciso saber
			
				$retorno['login'] = "ok";
				$_SESSION['idUsuario'] = $u->idUsuario;
			
			}else{
				
				$retorno['login'] = "falha";
				$retorno['mensagem'] = "Senha inválida.";
			
			}
		}else{
			$retorno['login'] = "falha";
			$retorno['mensagem'] = "Usuário não encontrado.";
		}
		
		return $retorno;

}

O evandro me disse que não preciso de if por causa do while, mas nesse caso eu teria a precisao do if pra testar os senao, porque primeiro preciso saber se o usuario foi encontrado senao eu dou uma msg, e depois a senha.

 

 

De acordo com você devo tirar o if dali e colocar o

while($resultado = mysql_fetch_row($query)){

 

}

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala tio kisuke Matheus Brito... Dá uma olhada:

 

public function doLogin($objUsuario) {
	// não é interessante colocar a conexão dentro da classe
	$mysql = mysql_pconnect ( DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD );
	mysql_select_db ( DATABASE_NAME );
	
	// tem algum objetivo colocar dentro do $u->login? Tem algum __set específico na classe UsuarioVO?
	// se não tiver, não tem necessidade de utilizar isto
	$u = new UsuarioVO ();
	$u->login = $objUsuario ['login'];
	$u->pass = $objUsuario ['pass'];
	// mudei a consulta. Agora recupero o campo idUsuario e a senha aqui
	$sql = mysql_query ( "SELECT idUsuario, login, pass FROM Usuario WHERE login='{$u->login}'" );
	$retorno ['login'] = null;
	$retorno ['mensagem'] = null;
	// verificamos se existe usuário cadastrado, ou seja, se retornou alguma linha da consulta
	if (mysql_num_rows ( $sql ) > 0) {
		// caso tenha retornado, fazemos um fetch para pegar o valor
		$result = mysql_fetch_object ( $sql );
		
		$u->pass = md5 ( $u->pass );
		if ($u->pass === $result->pass) {
			// se as senhas forem iguais, adiciona o id do usuário à session
			$retorno ['login'] = "ok";
			$_SESSION ['idUsuario'] = $result->idUsuario;
		
		} else {
			
			$retorno ['login'] = "falha";
			$retorno ['mensagem'] = "Senha inválida.";
		
		}
	} else {
		$retorno ['login'] = "falha";
		$retorno ['mensagem'] = "Usuário não encontrado.";
	}
	
	return $retorno;

}
Leia os comentários dentro do código. Além disto, estude a possibilidade de utilizar MySQLi ou PDO, pois acredito que seu código está vulnerável à SQL Injection, dependendo de como são feitos os tratamentos em UsuarioVO e o que vem em $objUsuario.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai meu sobrinho Matias, como andas?

Seguinte a conexão é dentro do construtor da classe eu que tava testando uma parada ai esqueci de tirar.

Não sabia que dava pra fazer desse modo, muito legal, meu forte nunca foi php, to pegando aos poucos.

A classe usuarioVO, é simplesmente um bean da tabela pra poder fazer o espelhamento no flex. Irei dar uma olhada no que você sugeriu segurança nunca é demais.

A variavel ali objUsuario é um objeto que mando do flex pro php no caso é o login e a senha de quem tenta acessar.

 

 

Abs

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.