dr.x 1 Denunciar post Postado Abril 22, 2015 Olá pessoal !O que está errado ?Estou trazendo da base de dados. $consulta = $pdo->prepare("SELECT id, nome, senha FROM usuarios where usuario = :usuario;"); $consulta->bindParam(':id', $_GET['id'], PDO::PARAM_INT); $consulta->bindParam(':nome', $_GET['nome'], PDO::PARAM_STR); $consulta->bindParam(':usuario', $_GET['usuario'], PDO::PARAM_STR); $consulta->execute(); $linha = $consulta->fetch(PDO::FETCH_ASSOC); Não está retornando os valores solicitados. echo "Id:" .$linha["id"]. "<br/>"; echo "Usuário:" .$linha["usuario"]. "<br/>"; echo "Nome:" .$linha["nome"]. "<br/>"; Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Abril 22, 2015 Primeiramente, se é uma consullta, o único dado necessário é usuário. $consulta = $pdo->prepare("SELECT id, nome, senha FROM usuarios where usuario = :usuario;"); $consulta->bindParam(':usuario', $_GET['usuario'], PDO::PARAM_STR); $consulta->execute(); $linha = $consulta->fetch(PDO::FETCH_ASSOC); Tem certeza que não está ocorrendo nenhum erro? Pois deveria lançar algum erro sobre parâmetro não encontrado.Na hora de criar sua conexão, adicione a opção para tratar erros como exceções: try { $pdo = new PDO(/** dados de conexão **/); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ echo 'ERROR: ' . $e->getMessage(); } E na hora de realizar a consulta: try { $consulta = $pdo->prepare("SELECT id, nome, senha FROM usuarios where usuario = :usuario;"); $consulta->bindParam(':usuario', $_GET['usuario'], PDO::PARAM_STR); $consulta->execute(); $linha = $consulta->fetch(PDO::FETCH_ASSOC); /** importante fechar o cursor do statement uma vez que o dados foram retornados **/ $consulta->closeCursor(); echo "Id:" .$linha["id"]. "<br/>"; echo "Usuário:" .$linha["usuario"]. "<br/>"; echo "Nome:" .$linha["nome"]. "<br/>"; } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } Também é importante fechar o cursos, vide o manual. Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 22, 2015 Obrigado Gabriel. Estou usando assim, mas a único retorno do echo são os títulos. Na minha base tenho 2 usuários apenas. Só para teste. <?php (...) aquí eu verifico a sessão... //Conecta o banco de dados e já faz o tratamento mencionado. include("conexao.php"); $pdo=conectar(); try { $consulta = $pdo->prepare("SELECT id, nome, senha FROM usuarios where usuario = :usuario;"); $consulta->bindParam(':usuario', $_GET['usuario'], PDO::PARAM_STR); $consulta->execute(); $linha = $consulta->fetch(PDO::FETCH_ASSOC); /** importante fechar o cursor do statement uma vez que o dados foram retornados **/ $consulta->closeCursor(); echo "Id:" .$linha["id"]. "<br/>"; echo "Usuário:" .$linha["usuario"]. "<br/>"; echo "Nome:" .$linha["nome"]. "<br/>"; } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Abril 23, 2015 Testando essa query diretamente no SGBD funciona corretamente? Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 23, 2015 Tranquilo Gabriel. Funcionou. A sessao do usuário por algum motivo desconhecido não estava sendo reconhecida. Matei o navegador e reiniciei os serviços e funcionou. Coisa de aprendiz. Valeu ! Compartilhar este post Link para o post Compartilhar em outros sites
ivanferrer 5 Denunciar post Postado Abril 23, 2015 1. Verificou se tem algum registro no banco?2. Caso tenha, o erro pode ser na sua conexão, já verificou?3. utilize o seguinte formato: <?php $id = $_GET['id']; $sql = "SELECT id, nome, senha FROM USUARIO where id = :id"; $stmt = $pdo->prepare($sql); $stmt->execute(array('id' => (int) $id)); return $stmt; ?> Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Abril 23, 2015 Dentro do bindParam você não pode colocar diretamente o method e necessário colocar em uma variável. Primeiramente você está usando o $_GET o method do seu form e GET se for não tem erro, caso contrario a recuperação e via $_POST e não $_GET. você está usando o $consulta = $pdo->prepare("SELECT id, nome, senha FROM usuarios where usuario = :usuario;"); $consulta->bindParam(':id', $_GET['id'], PDO::PARAM_INT); $consulta->bindParam(':nome', $_GET['nome'], PDO::PARAM_STR); $consulta->bindParam(':usuario', $_GET['usuario'], PDO::PARAM_STR); $consulta->execute(); $linha = $consulta->fetch(PDO::FETCH_ASSOC); $pdo a mesmo está recebendo a instancia do PDO? usando uma função ou uma class com o padrão singleton? Compartilhar este post Link para o post Compartilhar em outros sites