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

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!

Está indicando erro no while sem ter while?

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 />";
	}
?>

Verdade, passou batido. Aqui:

Não vai ponto e vírgula?

1 curtida

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

“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.

1 curtida

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)!

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

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

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???

1 curtida

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