Ir para conteúdo

Arquivado

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

Vales & Dores

[Resolvido] Quem sabe PDO::Query com retorno num_rows

Recommended Posts

quem sabe fazer retornar numero de linhas achadas no BD pelo select

Tipo Num_rows ?

 

$busca = $dsn->prepare("SELECT id, email, senha FROM cadastro WHERE email='{$_POST['email']}' AND senha='{$_POST['senha']}'");

$busca->execute();
	$row = $busca->fetchAll();
	count($row);
	$valor = var_dump($row);

 

Alguem consegui fazer um if de conparação de dados para se verdadeiro liberar acesso a uma HEADER?

Ai pessoal nao to conseguindo fazer que nem

Num_effect_row

, e erá 0 ou 1 por favor ajude :upset: :upset:

 

$busca = $dsn->prepare("SELECT id, email, senha FROM cadastro WHERE email='{$_POST['email']}' AND senha='{$_POST['senha']}'");
	$busca->execute();
	$row = $busca->fetch(PDO::FETCH_NUM);

	foreach($row as $key=>$val)
	{
		echo $key.' - '.$val.'<br>';
	}

 

<?php
include "conectar_bd.php";

$verifica_acao 	= 	$_POST["acao"];
$user 			=	$_POST['email']; 
$senha 			=	$_POST['senha'];
//OK Funcionando

	if (empty($user)) 
	{
		echo('nome nao e valido');
		exit();
	} 
	elseif (empty($senha)) 
	{
		echo ('senha nao e valido');
		exit();
	} 
	else
	{
		echo 'O codigo esta certo nome e senha foram preenchidos';
	}

if(!filter_var($user, FILTER_VALIDATE_EMAIL)){
 echo 'Campo Invalido:</b> E-mail escrito de forma errada por fovor corrija</font></center>';
}


$busca = $dsn->prepare("SELECT * FROM cadastro WHERE login = ? AND senha =?");
[b]$busca->bind_param(1, $_POST['email'], PDO::PARAM_STR);[/b]
$busca->bind_param(2, $_POST['senha'], PDO::PARAM_STR);

// Executando statement 
$busca->execute();


// Se a linha existe: indicar que esta logado e encaminhar para outro lugar 
$res = $busca->fetchAll(PDO::FETCH_ASSOC);

if (count($res) > 0) 
{
   $_SESSION['email'] = $$res['email'];
   $_SESSION['senha'] = $$res['senha'];
   echo 'DENTRO DO SITE';
} 

else 
{
   echo '<p class="erro">Login/Senha inválidos</p>';
} 

?> 

a linha em negrito esta dando erro:

Fatal error: Call to undefined method PDOStatement::bind_param() in C:\xampp\htdocs\www\autenticando.php on line 47

 

ai pessoal quem ja passo por essa me diga o que esta avendo assim que essa etapa estiver pronta eu coloco o codigo para ajudar o pessaol.

 

OBS estou querendo fazer um sistema de login e senha a forma anterior que esta no primeiro post esta fora não deu para fazer funcionar esse aqui agora e mais promisor espero ajuda obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites
$busca = $dsn->prepare("SELECT COUNT(*) AS total FROM cadastro WHERE email='{$_POST['email']}' AND senha='{$_POST['senha']}'");
$row = $busca->execute()->fetchRow();
echo $row['total'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

$total = $busca->rowCount();

Amigo essa parte funciona mas o proprio PHP diz que nao devemos usar para SELECT por que ele em sua função tem a devoluçao de alteração do DELETE, UPDATE, INSERT.

 

Por isso nao demos usar.

 

mas ficaria feliz se fosse assim tao facil.

 

Agora eu estou lidando com o codigo que eu postei a cima da uma olhada ele é exatamente, o que eu queria.

 

Erro dele é:

erro fatal : "PDOException" excepção Uncaught com SQLSTATE mensagem '[42000]: Erro de sintaxe ou violação de acesso: 1064 Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde ao seu servidor MySQL versão para o direito sintaxe para usar perto de 'Senha =' aaa'' at line 1 "em C: \ xampp \ htdocs \ www \ autenticando.php: Stack trace 49: # 0 C: \ xampp \ htdocs \ www \ autenticando.php (49) : PDOStatement-> execute () # 1 {main} jogado em C: \ xampp \ htdocs \ www autenticando.php \ na linha 49

//O CODIGO ERRADO É ESSE:
$busca = $dsn->prepare("SELECT * FROM cadastro WHERE user='{$_POST['email']}' AND senha senha='{$_POST['senha']}'");
$busca->execute();

 

$busca = $dsn->prepare("SELECT COUNT(*) AS total FROM cadastro WHERE email='{$_POST['email']}' AND senha='{$_POST['senha']}'");
$row = $busca->execute()->fetchRow();
echo $row['total'];

 

 

Bom dia quando eu vi o seu cod eu fiquei feliz nossa que maravilha colocar um count dentro do SQL nem imagina isso tambem estou começando ainda, tem muitas coisa que pode e eu nao sei e tem muitas que não posso tambem.

 

Bem o seu deu Erro:

Fatal error: Call to a member function fetchRow() on a non-object in C:\xampp\htdocs\www\autenticando.php on line 48

 

Minha ideia é que esse comando nao trabalhe com PDO o que voce me diz ?

 

Obrigado amigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

$total = $busca->rowCount();//funciona


$busca->bind_param() // tem certeza que isso ta certo ?

$busca = $dsn->prepare("SELECT COUNT(*) AS total FROM cadastro WHERE email='{$_POST['email']}' AND senha='{$_POST['senha']}'");
$row = $busca->execute()->fetch();
echo $row['total']; //funciona

 

tem o count() do php tmb. e so conta uma array tem misterio nisso não...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente esse papo de:

$row = $busca->execute()->fetchRow();

$row = $busca->execute()->rowCount();

 

eu to achando que deveria funcionar gostaria de saber se voces usam eles ou ja usaram?

Por que eu to tentando e nao esta dando certo.

Eu andei lendo que tem servidores que nao da suporte e sertas classes quem tiver experiencia com isso por favor me responda:

eu uso o XAMPP ultima verção 5 e gostaria de saber se esse tem problemas com PDO?

 

Sim funciona mas aparente mente essa forma de colocar

$row = $busca->execute()->fetch();

 

nao esta deixando passar veja o erro:

erro fatal : Chamada a um membro função fetch () em um objeto não em C: \ xampp \ htdocs \ www \ autenticando.php na linha 48

 

Isso e para ser assim mesmo dois (->execute()->fetch();) se puder me matar uma curiosidade para que serve ->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo essa parte funciona mas o proprio PHP diz que nao devemos usar para SELECT por que ele em sua função tem a devoluçao de alteração do DELETE, UPDATE, INSERT.

 

Por isso nao demos usar.

 

mas ficaria feliz se fosse assim tao facil.

Muito boa a sua observação, pena que ela não condiz com o que o manual fala... mas enfim, a outra solução com o COUNT vai resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai gente nesse codigo aqui:

$busca = $dsn->prepare("SELECT COUNT(*) AS total FROM cadastro WHERE email='{$_POST['email']}' AND senha='{$_POST['senha']}'");
$row = $busca->execute();
$row = $busca->fetch();
echo $row['total'].'<p>'; //funciona

 

teve novidade apareceu isso aqui:

array (2) {["total"] => string (1) "1" [0] => string (1) "1"}

 

quero so fazer uma pergunta como e que eu faço uma if (Condiçao) para liberar ou barrar esse tipo de dados?

 

Muito boa a sua observação, pena que ela não condiz com o que o manual fala... mas enfim, a outra solução com o COUNT vai resolver.

Por favor diga por que isso nao condiz com a realidade?

Pois isso que escrevi veio do MANUAL tambem amigo.

Por favor diga o que voce sabe.

obrigado

 

O codigo

$busca = $dsn->prepare("SELECT COUNT(*) AS total FROM cadastro WHERE email='{$_POST['email']}' AND senha='{$_POST['senha']}'");
$row = $busca->execute();
$row = $busca->rowCount();
echo $row;

 

ta f***, se eu colocar usuario e senha que existem no BD o rowCount retorna 1

se eu colocar usuario correto e senha erra o rowCount retorna 1

se eu colocar usuario e senha errados o rowCount retorna 1

 

acredito que ele esta contando se existe um array e nao procurando ver se os dados no $_POST condiz com o que esta no campos do BD.

 

O que voces me dizem disso?

 

Alguem ja fez sistema de autenticação usando PDO?

Eu acha que mudar para PDO nao ia me dar tanta dor de cabeça assim gente. :wacko: :wacko: :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

como muitos disseram: $db->rouCount();

 

esta na documentacao

 

http://br.php.net/manual/pt_BR/pdostatement.rowcount.php

 

 

uma dica, sev ai usar so e somente so o mysql, usao mysqli, pdo eu aconselho quando você trabalha com multiplos bancos de dados diferentes...o mysqli eh mais simples de usar, qq host tem...

Compartilhar este post


Link para o post
Compartilhar em outros sites

como muitos disseram: $db->rouCount();

 

esta na documentacao

 

http://br.php.net/manual/pt_BR/pdostatement.rowcount.php

 

 

uma dica, sev ai usar so e somente so o mysql, usao mysqli, pdo eu aconselho quando você trabalha com multiplos bancos de dados diferentes...o mysqli eh mais simples de usar, qq host tem...

Tudo bem pelo o que voces fala a vida é bela mas vejá o que esta acontesendo comigo:

 

Esta e a linha que esta dando erro:

$lista = $busca->rouCount();

 

Este é o Erro

Fatal error: Call to undefined method PDOStatement::rouCount() in C:\xampp\htdocs\www\autenticando.php on line 48

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem pelo o que voces fala a vida é bela mas vejá o que esta acontesendo comigo:

 

Esta e a linha que esta dando erro:

$lista = $busca->rouCount();

 

Este é o Erro

Fatal error: Call to undefined method PDOStatement::rouCount() in C:\xampp\htdocs\www\autenticando.php on line 48

 

por isso q eu passei o link da documentacao, você so copiou e colou o codigo...eu escrevi errado e você copiou...leia a documentacao, ela eh sua melhor amiga...

 

 

de fato rouCount nao existe, existe rowCount...

Compartilhar este post


Link para o post
Compartilhar em outros sites

por isso q eu passei o link da documentacao, você so copiou e colou o codigo...eu escrevi errado e você copiou...leia a documentacao, ela eh sua melhor amiga...

 

 

de fato rouCount nao existe, existe rowCount...

OK Agora esta funcionando mas quando eu coloco usuario e senha correto nao esta entrando o que voce tem a dizer IGOR DA UMA MAO

 


$busca = $dsn->prepare("SELECT * FROM cadastro WHERE user='{$_POST['email']}' AND senha senha='{$_POST['senha']}'");
$busca->execute();

$lista = $busca->rowCount();

var_dump($lista);
if($lista == 1){
echo 'Ta dentro';

exit();
}
else{

Echo 'Nao entro';
exit();
}

 

Achei a falha esta nesse trecho

WHERE user='{$_POST['email']}' AND senha senha='{$_POST['senha']}'

 

Eu digo isso por que eu retirei ele e a contagem deu certo quer dizer a indicação q voces me deram esta correta obrigado a todos, mas me falta intendimento do que esta avendo quem ja passo por isso e pode me dar o entendimento do que esta avendo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

WHERE user='" . $_POST['email']. "' AND senha senha='" . $_POST['senha']} . "'";

o seu codigo funciona era exatamente o mesmo que meu grande amigo igor.php me encino quando eu estava começando.

ele esta pegando os post email e senha normalmente mas nao esta verificando no BD nao sei bem dai pra frente nao autoriza.

 

O var_dump do select esta mostrando que esta pegando.

a

$lista = $busca->rowCount();

nao esta pegando nada esta zero.

 

Amigos sera que agora voces estao intendendo o que eu estou passando?

eu ja tava acostumado a trabalhar com select insert delete update tudo agora que eu mudei para pdo esta fazendo isso tudo eu ja li varias vezes cada classes de cada comando estou com intendimento mas pelo geito tem algo que nao esta funcionando (CLARO)!

 

Olha eu estou usando o XAMPP 5 sera que meu servidor nao aceita PDO ou sertos comandos?

ja olhei o php.ini e ta tudo bem segundo meus estudos que estao postados tambem.

 

por favor alguem me ajude e me de o intendimento, se voces nao quizerem me dar o codigo tudo bem mas me ajudem a inteder o que esta errado nao tenho mais o que fazer continuo estudando mas estou presisando de voces mesmo.

 

Desculpa ser chato a todos voces mas preciso de voces. :cry: :cry: :cry: :cry: :cry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora sim esta dando 1 e 0 mas por que nao esta pegando a SESSION?

Alguem pode dar uma ideia do por que ?

tenho que ter para liberar a outra pagina se nao ela volta pro index.php

<?php
$dsn = new PDO("mysql:host=localhost;dbname=user", 'root', '');
if($dsn){
echo 'ok';
}else{
echo '!';
}

$verifica_acao 	= 	$_POST["acao"];
$user 			=	$_POST['email']; 
$senha 			=	$_POST['senha'];
//OK Funcionando

	if (empty($user)) 
	{
		echo('nome nao e valido');
		exit();
	} 
	elseif (empty($senha)) 
	{
		echo ('senha nao e valido');
		exit();
	} 
	else
	{
		echo ' <font size=6 face=arial color=red>Email e Senha OK</font><p>';
	}

if(!filter_var($user, FILTER_VALIDATE_EMAIL)){
 echo '<pre>
















 Campo Invalido:</b> E-mail escrito de forma errada por fovor corrija</font></center>';
}


// Preparando statement 
$stmt = $dsn->prepare("SELECT * FROM cadastro WHERE email = ? AND senha = ?"); 
$stmt->bindParam(1, $_POST['email'], PDO::PARAM_STR); 
$stmt->bindParam(2, $_POST['senha'], PDO::PARAM_STR); 
var_dump($stmt);
// Executando statement 
$stmt->execute(); 

// Obter linha consultada 
$obj = $stmt->rowCount(); 

// Se a linha existe: indicar que esta logado e encaminhar para outro lugar 
if ($obj) { 
$_SESSION['email'] = $_POST['email'];
$_SESSION['senha'] = $_POST['senha']; 
echo 'Dentro do Site';
}else{ 
echo '<p class="erro">Login/Senha inválidos</p>'; 
} 
exit();
var_dump($obj['email']);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo código acima, faltou iniciar a sessão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo código acima, faltou iniciar a sessão.

estou vendo que nesse ramos nos necessitamos dos amigos e estou vendo que tenho muitos aqui

mais uma vez fico grato pela a ajuda de cada voces esta lendo isso IGOR LUIZ FElip os trez tem me ajudado muito digo sobre eles por que tenho contato msn e email que sempre que necessito eles estao la para ajudar e a todos voces do forum o SERRA, Henrique Barcelos.

 

bem todos que participaram desse parte, e quero dizer que as 4:54 da manha eu terminel e vou fazer um video para que tenha mais material para quem esta começando como eu.

 

e quero falar que o que eu estou contruindo com a ajuda de voces eu vou dar de graça para a internet sei que vai levar 3 anos para terminar mas sera de todos vamos mostrar que podemos.

 

Mais uma vez obrigado e aqui esta o codigo funcionando claro que sei que tem que inclementar coisas mas esta rodando legal:

 

 

<?php
$dsn = new PDO("mysql:host=localhost;dbname=user", 'root', '');
if($dsn){
echo 'ok';
}else{
echo 'Erro de Conexao tente novamente!';
}

$verifica_acao 		=	$_POST["acao"];
$user 			=	$_POST['email']; 
$senha 			=	$_POST['senha'];


	if (empty($user)){
		echo('Email não é valido');
		exit();
		} 
	elseif (empty($senha)){
		echo ('senha nao é valido');
		exit();
		}else{
		echo ' <font size=6 face=arial color=red>Email e Senha OK</font><p>';
		}

if(!filter_var($user, FILTER_VALIDATE_EMAIL)){
 echo '<pre>
















 Campo Invalido:</b> E-mail escrito de forma errada por fovor corrija</font></center>';
}


// Preparando statement 
$stmt = $dsn->prepare("SELECT email, senha FROM cadastro WHERE  email = ? AND senha = ?"); 
$stmt->bindParam(1, $_POST['email'], PDO::PARAM_STR); 
$stmt->bindParam(2, $_POST['senha'], PDO::PARAM_STR); 
$stmt->execute(); 



$obj = $stmt->rowCount(); 


if ($obj) { 
session_start();
$_SESSION['email'] = $_POST['email'];
$_SESSION['senha'] = $_POST['senha'];
header('location:defalt.php');
}else{ 
   echo '<p class="erro">Login/Senha inválidos</p>'; 
   }

exit();

?>

obrigada(o)eu-obrigada(o)voce.jpg

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.