[RESOLVIDO] Consulta no Banco de Dados passando parâmetros - PDO em PHP

10 respostas Resolvido
pdomysql
V

Olá, estou tentando fazer uma consulta no banco de dados passando parâmetros em PHP, o usuário insere o e-mail e depois faz a consulta no banco de dados coletando o nome e e-mail registrados no banco de dados.

Código - consulta.php

Aqui é o código que faz a consulta:

<?php
	include "..\conexao.php";
	
	$email = $_POST['usuario_email'];
	
	$sql_login = ("SELECT nome, email FROM usuarios WHERE email = :EMAIL");
	$rs = $PDO->prepare($sql_login);
	$rs->bindParam(':EMAIL', $email . "%");
	$rs->execute
	
	while($row = $rs->fetch(PDO::FETCH_OBJ)){
 	 echo $row->nome . "<br />";
 	 echo $row->email . "<br />";
	}
?>
Código - login_site.php

Aqui é o código que o usuário insere o e-mail:

<?php
 	 			<form method="post" action="consulta.php">
						E-Mail
						<br>
						<input type="text" name="usuario_email" placeholder="Digite seu e-mail" /> 
						<br><br>
				<input type="submit" name="botao" value="Entrar" />
		</form>
 	?>
Erro que estou obtendo
`**Parse error** : syntax error, unexpected 'while' (T_WHILE) in  **C:\xampp\htdocs\App\consulta.php**  on line  **11**`

Se alguém puder me ajudar, ou se tiver um tutorial com CRUD PDO PHP, já procurei no Google porém nem um que encontrei funcionou!

10 Respostas

I

Está indicando erro no while sem ter while?

V

Tem while no consulta.php!

Código - consulta.php
<?php
	include "..\conexao.php";
	
	$email = $_POST['usuario_email'];
	
	$sql_login = ("SELECT nome, email FROM usuarios WHERE email = :EMAIL");
	$rs = $PDO->prepare($sql_login);
	$rs->bindParam(':EMAIL', $email . "%");
	$rs->execute
	
	while($row = $rs->fetch(PDO::FETCH_OBJ)){
 	 echo $row->nome . "<br />";
 	 echo $row->email . "<br />";
	}
?>
I

Verdade, passou batido. Aqui:

Não vai ponto e vírgula?

V

Ah sim haha, agora estou com esse outro problema:

Fatal error: Uncaught Error: Cannot pass parameter 2 by reference in C:\xampp\htdocs\App\consulta.php:8 Stack trace: #0 {main} thrown in C:\xampp\htdocs\App\consulta.php on line 8
I

“Não se pode passar dois parâmetros por referência em […]”

Você está passando $email e “%” para o parâmetro de ligação :EMAIL.

V

Consegui resolver assim, porém não me mostra o que está inserido no banco de dados.

<?php
include "..\conexao.php";

$email = $_POST['usuario_email'];

$sql_login = ("SELECT nome, email FROM usuario WHERE email = :EMAIL");
$rs = $PDO->prepare($sql_login);
$rs->bindParam(':EMAIL', $email);
$rs->execute;

while($row = $rs->fetch(PDO::FETCH_OBJ)){
 echo $row->nome;
 echo $row->email;
}

?>

Neste caso “nome” e “email” (existe essas colunas)!

I

O que você quer dizer com isso? Explique melhor…

V

Ele deveria mostrar o registro da coluna nome e email que existe no banco de dados

Print da página em branco

Print do banco de dados

image

Edit.: Percebi que ele não está entrando no while

I
Solucao aceita

Então a expressão $rs->fetch(PDO::FETCH_OBJ) está retornando FALSE. Aqui:

Não é assim: $rs->execute(); conforme indica a documentação: PDO::prepare???

V

Perfeito! Obrigado, nem lembrei de olhar a documentação :man_facepalming:

Criado 24 de maio de 2020
Ultima resposta 24 de mai. de 2020
Respostas 10
Participantes 2