[RESOLVIDO] Dado do BD para uma variável

Tenho um sistema de login com php usando pdo e pra logar o usuário uso duas variaveis $user e $pass…
Uma vez logado, preciso verificar se o nivel do usuario permite q ele acesse a pagina x.php, so que pra verificar, tenho que resgatar informação do campo ‘level’ do Banco de Dados e armazenar dentro de uma variavel para trata-la…
A pergunta é: como acesso as informações do usuario logado e retorno pra uma variavel somente o nivel dele??

Usando PDO…

$sql = "SELECT level FROM tabela WHERE user = ? AND pass = ?";
$query = $con->prepare($sql);
$query->bindValue(1, $user);
$query->bindValue(2, $pass);
$query->execute();

$level = $query->fetchColumn();
echo $level;

http://php.net/manual/en/pdostatement.fetchcolumn.php

Valeu amigo obrigado… Cnsegui tbm com um Foreach():

$busca = $pdo->prepare("SELECT * FROM usuarios WHERE user=? AND pass=?"); $busca->bindParam(1,$user); $busca->bindParam(2,$senha); $busca->execute(); $busca->fetchAll(POD::FETCH_ASSOC); foreach($busca as $colum){ $level = $colum['lvUser']; }

Desnecessário usando foreach…

Quantos registros você irá puxar passando apenas um único usuário e senha?

Se o banco retornasse +1 linha, o foreach faria sentido, mas como não é o caso… o fetchColumn é exatamente para isso, trazer um valor de uma única linha…

Agora se precisar trazer todos os campos de uma vez e preencher uma única linha, ao invés do fetchColumn pode trazer um fetchobject…

$busca = $pdo->prepare("SELECT * FROM usuarios WHERE user=? AND pass=?");
$busca->bindParam(1,$user);
$busca->bindParam(2,$senha);
$busca->execute();

$usuario = $busca->fetchObject();

echo $usuario->lvUser;
echo $usuario->nome;
echo $usuario->idade;

Por exemplo…

O comum é trazer um usuário completo da base e guardá-lo em sessão (os dados cruciais apenas) uma única vez no login… assim depois você teria disponível em qualquer lugar do sistema…

$_SESSION['usuario'] = $usuario; //guarda no login...

$usuario = $_SESSION['usuario']; //pega do login...

if ($usuario->lvUser == 'admin') {
   //...
}

Vai brincando, assim você conhece mais o php, agora usar laço de repetição para trazer um único registro definitivamente não faz sentido e acaba sendo processamento desnecessário…

Entendi, Muito obrigado pela explicação… Dessa maneira realmente bem melhor trabalhar!

1 curtida