Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vales & Dores

como visualizar select usando PDO?

Recommended Posts

Ola fiz um sistema de login e senha esta funcionando, mas agora eu sentei de frente a maquina para entender

melhor.

 

vocês estão vendo o select usando PDO, até ai sem novidades para niguem...

 

mas quando eu quero ver as informações que ele chama usando o while nao funciona por que será ?

 

Quem tem uma dica ai ?

 

<?php
//conecxao com o Banco de dados
include('conecta.php');


$sql = $dsn->prepare('SELECT * FROM cadastro');
$sql->execute();

while($ver = fetch_object($sql)){

$ver['email'];
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso ai que eu tava querendo.

Tava querendo chamar os dados do BD agora tá funcionando, meu problema era que o PDO só chama objetos e nao tabulares.

 

Ai tem como chamar usando o WHILE ?

 

Amigo a sua parada de usar ->fetchAll não funciono nao.

 

Se vocês poderem me expricar o por que do sinal -> para que serve isso mesmo ?

 

Em que situação eu posso usar esse -> ?

 

Valeu pela ajuda gente...

 

$sql = $dsn->prepare("SELECT * FROM cadastro");
$sql->execute();

//---------------------------------------------------------------------------------------

foreach($sql as $ver)
{
   echo $ver['email'];

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é usado para chamar método de algum objeto

 

Class Pessoa{
private $nome;

public function setNome($pessoa){
  $this->pessoa = $pessoa;
}
public function getNome(){
  return $this->pessoa;
}
}

$pessoa = new Pessoa();
$pessoa->setNome('Vinicius');
echo $pessoa->getNome();

 

acontece que com o PDO já são funções nativas então é só chamas

 

seguindo a ordem é

 

sua conexão no caso a sua é dns

vai usar o método(função) prepare que vai preparara a sql depois são funções para falar o tipo da consulta

 

fetchAll significa que vai retornar todos os dados e o PDO::FETCH_OBJ esta dizendo ao fetchAll que ele é um método PDO e que retornar todos os dados como um objeto (array).

 

o que parece incorreto no seu code é que se usa query para consulta.

tente fazer assim

 

$sql = $dsn->query("SELECT * FROM cadastro")->fetchAll(PDO::FETCH_OBJ);


foreach($sql as $ver)
{
   echo $ver['email'];

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se vocês poderem me expricar o por que do sinal -> para que serve isso mesmo ?

 

Em que situação eu posso usar esse -> ?

 

T_OBJECT_OPERATOR, como já foi explicado, serve para acessar métodos e atributos de uma instância.

 

Conhecimentos básicos de orientação a objetos são necessários.

 

PDO é uma classe nativa do PHP para DBAL.

 

Isso significa que, usando pdo, a troca entre um SGDB é menos dolorida do que sair trocando todos os mysql_* pelo que quer que seja.

 

Quando você cria uma nova instância de PDO, passando um DSN válido, você estará apto a interagir com o banco selecionado.

 

Essa interação é dada através da Interface de PDO. Para acessar os métodos de PDO, você usa o T_OBJECT_OPERATOR, ou seja, o sinal de ->.

 

Seu arquivo 'conecta.php' já faz um pouco do caminho. Monta a DSN e cria uma nova instância de PDO que ficará armazenada na variável $dsn.

 

Para interagir com o banco, você pode executar uma consulta. Ou montar uma consulta preparada.

 

Iterar o retorno de uma consulta só é possível pelo segundo método. A consulta preparada fica armazenada numa instância de PDOStatement. Uma consulta preparada também precisa ser executada. Mas, nesse caso, através do método execute. Após uma execução com sucesso, seu PDOStatement estará pronto para ser iterado. É o equivalente ao retorno das *_query.

 

Assim como as *_fetch_*, PDOStatement fornece algumas diferentes formas de iteração, se valendo da orientação a objetos. A forma mais simples, pra quem vem dos antigos *_fetch_array é utilizando PDOStatement::fetchAll com as opções padrão.

 

Aplicando toda a teoria na prática:

 

<?php

$dsn = 'mysql:host=localhost'; // String DSN para se conectar a um SGDB MySQL local
$usr = 'root';                 // Usuário válido no servidor MySQL
$pwd = 'root';                 // Senha do usuário acima

$mysql_pdo = new PDO($dsn, $usr, $pwd);

// Selecionamos um banco de dados através de uma execução simples
$mysql_pdo->exec('use mysql;');

// O arquivo "conecta.php" encerra nesse ponto. No lugar de $dsn, nossa conexão está em $mysql_pdo

// Preparamos uma consulta e armazenamos o PDOStatement em $consulta
$consulta = $mysql_pdo->prepare('show tables;');

// Executamos a consulta
$consulta->execute();

// Agora, $consulta está pronto para ser iterado
foreach ($consulta->fetchAll() as $linha) {
   print $linha[0] . PHP_EOL;
}

/* A saída do laço acima será:
columns_priv
db
event
func
general_log
help_category
help_keyword
help_relation
help_topic
host
ndb_binlog_index
plugin
proc
procs_priv
proxies_priv
servers
slow_log
tables_priv
time_zone
time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
user
*/

Compartilhar este post


Link para o post
Compartilhar em outros sites

T_OBJECT_OPERATOR, como já foi explicado, serve para acessar métodos e atributos de uma instância.

 

Conhecimentos básicos de orientação a objetos são necessários.

 

PDO é uma classe nativa do PHP para DBAL.

 

Isso significa que, usando pdo, a troca entre um SGDB é menos dolorida do que sair trocando todos os mysql_* pelo que quer que seja.

 

Quando você cria uma nova instância de PDO, passando um DSN válido, você estará apto a interagir com o banco selecionado.

 

Essa interação é dada através da Interface de PDO. Para acessar os métodos de PDO, você usa o T_OBJECT_OPERATOR, ou seja, o sinal de ->.

 

Seu arquivo 'conecta.php' já faz um pouco do caminho. Monta a DSN e cria uma nova instância de PDO que ficará armazenada na variável $dsn.

 

Para interagir com o banco, você pode executar uma consulta. Ou montar uma consulta preparada.

 

Iterar o retorno de uma consulta só é possível pelo segundo método. A consulta preparada fica armazenada numa instância de PDOStatement. Uma consulta preparada também precisa ser executada. Mas, nesse caso, através do método execute. Após uma execução com sucesso, seu PDOStatement estará pronto para ser iterado. É o equivalente ao retorno das *_query.

 

Assim como as *_fetch_*, PDOStatement fornece algumas diferentes formas de iteração, se valendo da orientação a objetos. A forma mais simples, pra quem vem dos antigos *_fetch_array é utilizando PDOStatement::fetchAll com as opções padrão.

 

Aplicando toda a teoria na prática:

 

<?php

$dsn = 'mysql:host=localhost'; // String DSN para se conectar a um SGDB MySQL local
$usr = 'root';                 // Usuário válido no servidor MySQL
$pwd = 'root';                 // Senha do usuário acima

$mysql_pdo = new PDO($dsn, $usr, $pwd);

// Selecionamos um banco de dados através de uma execução simples
$mysql_pdo->exec('use mysql;');

// O arquivo "conecta.php" encerra nesse ponto. No lugar de $dsn, nossa conexão está em $mysql_pdo

// Preparamos uma consulta e armazenamos o PDOStatement em $consulta
$consulta = $mysql_pdo->prepare('show tables;');

// Executamos a consulta
$consulta->execute();

// Agora, $consulta está pronto para ser iterado
foreach ($consulta->fetchAll() as $linha) {
   print $linha[0] . PHP_EOL;
}

/* A saída do laço acima será:
columns_priv
db
event
func
general_log
help_category
help_keyword
help_relation
help_topic
host
ndb_binlog_index
plugin
proc
procs_priv
proxies_priv
servers
slow_log
tables_priv
time_zone
time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
user
*/

 

 

depois dessa explicação eu tenho que le agradecer pessoas como todos vocês que ajudam iniciantes como eu

tem que agradecer mesmo valeu cara

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.