Lembrando que iremos fazer as comparações e observações devidas com o modo primitivo do PHP.
Autor: CarlosCX Albert
Site: http://escolacompleta.com
Aula: 03-06
SELEÇÃO COMUM COM PDO
include_once("conexao.php");
function listar_alunos(){
try{
$listar = $conexao->query("SELECT * FROM alunos");
$listar->execute();
if($listar->rowCount() > 0){
return $listar->fetchAll(PDO::FETCH_ASSOC);
}else{
echo "Não existem alunos cadastrados na base.";
}
}catch(PDOException $error){
echo "Error ao listar alunos: ".$error->getMessage();
}
}
$alunos = listar_alunos();
foreach($alunos as $aluno):
echo $aluno['nome_aluno']."<br />";
endforeach;
?>
Você poderia também, utilizar o FETCH_OBJ ao invés de FETCH_ASSOC , contudo nosso foreach ficaria desta forma:
echo $aluno->nome_aluno."<br />";
endforeach;
Exemplo:
include_once("conexao.php");//inclusao do arquivo de conexao da aula passada
function listar_alunos(){
try{
$listar = $conexao->query("SELECT * FROM alunos");
$listar->execute();
if($listar->rowCount() > 0){
return $listar->fetchAll(PDO::FETCH_OBJ);
}else{
echo "Não existem alunos cadastrados na base.";
}
}catch(PDOException $error){
echo "Error ao listar alunos: ".$error->getMessage();
}
}
$alunos = listar_alunos();
foreach($alunos as $aluno):
echo $aluno->nome_aluno."<br />";
endforeach;
?>
<h3>SELEÇÃO COMPOSTA COM PDO</h3>
A seleção composta já é diferente , pois iremos utilizar <strong>condições</strong> , e devemos utilizar o <strong>prepare</strong> do PDO.
O método <strong>query</strong> é utilizado apenas para seleções comuns que não envolvem condições(WHERE).
Exemplo de seleção composta:
[php]
< ?php
include_once("conexao.php");//inclusao do arquivo de conexao da aula passada
function listar_alunos_com_condicao(){
try{
$idade = 15;/*aqui defini a idade desejada para condicao*/
$listar = $conexao->prepare("SELECT * FROM alunos WHERE idade = :idade");
$listar->bindValue(":idade",$idade);/*O bindValue protege os dados que você está passando , seta o valor para o parametro.*/
$listar->execute();
if($listar->rowCount() > 0){
return $listar->fetch(PDO::FETCH_ASSOC);
}else{
echo "Não existem alunos cadastrados na base.";
}
}catch(PDOException $error){
echo "Error ao listar alunos: ".$error->getMessage();
}
}
$alunos = listar_alunos_com_condicao();
foreach($alunos as $aluno):
echo $aluno['nome_aluno']."<br />";
endforeach;
?>
Observem que no exemplo acima, eu não utilizei o fetchAll , mas sim apenas o fetch, pois estou querendo retornar apenas um valor específico informado em minha “condição”.
Lembrando também que ao invés de utilizar bindValue , podemos utilizar também bindParam , que irá retornar o mesmo valor , contudo você poderá também especificar o tipo do parâmetro ( type ) passado e o tamanho ( lenght ) .
Exemplo:
Desta forma estou especificando que o valor passado é do tipo inteiro(PARAM_INT), e o tamanho é 3. Ou seja , não existe pessoa com idade maior que 3 digitos.
E para tipos strings ? Como seria ?
Já no exemplo acima , estou informando que o parâmetro aluno_nome é do tipo string(PARAM_STR) e o tamanho máximo é de 255 caracteres.
Caso queiram saber mais sobre bindParam’s clique aqui
Agora, irei mostrar uma situação que muitos alunos tem dúvida. O famoso ponto de interrogação.
Quando passamos parâmetros , podemos também utilizar o ponto de interrogação , e logo após a posição do indice que pretendemos atribuir o valor corrente.
Exemplo:
$listar->bindValue(1,$idade);
$listar->execute();
if($listar->rowCount() > 0){
return $listar->fetch(PDO::FETCH_ASSOC);
}else{
echo "Não existem alunos cadastrados na base.";
}
}catch(PDOException $error){
echo "Error ao listar alunos: ".$error->getMessage();
}
}
$alunos = listar_alunos_com_condicao();
foreach($alunos as $aluno):
echo $aluno['nome_aluno']."
";
endforeach;
?>
Vejam que as linhas modificadas foram , as listadas abaixo:
$listar->bindValue(1,$idade);/*O bindvalue protege os
Contudo, fica a pergunta. E se eu quisesse passar dois parâmetros na condição ? como ficaria ?
Veja o exemplo abaixo:
$listar->bindValue(1,$idade);
$listar->bindValue(2,$sobrenome);
$listar->execute();
if($listar->rowCount() > 0){
return $listar->fetch(PDO::FETCH_ASSOC);
}else{
echo "Não existem alunos cadastrados na base.";
}
}catch(PDOException $error){
echo "Error ao listar alunos: ".$error->getMessage();
}
}
$alunos = listar_alunos_com_condicao();
foreach($alunos as $aluno):
echo $aluno['nome_aluno']."
";
endforeach;
?>
Concluindo nosso exemplo , vejam as linhas alteradas
$listar = $conexao->prepare("SELECT * FROM alunos WHERE idade = ? AND sobrenome = ?");
$listar->bindValue(1,$idade);/*O bindvalue protege os dados que você está passando.*/
$listar->bindValue(2,$sobrenome);
É isso pessoal até a Próxima!
Nenhum comentário:
Postar um comentário