PHP – Como fazer consultas utilizando o PDO

Dando continuidade ao post de configuração do PDO que pode ser encontrado aqui.

Primeiro vamos criar uma tabela com algumas informações:

  
CREATE TABLE album (  
  id int(11) NOT NULL auto_increment,
  artist varchar(100) NOT NULL,
  title varchar(100) NOT NULL,
  PRIMARY KEY (id)
);
INSERT INTO album (artist, title)  
    VALUES  ('The  Military  Wives',  'In  My  Dreams');
INSERT INTO album (artist, title)  
    VALUES  ('Adele',  '21');
INSERT INTO album (artist, title)  
    VALUES  ('Bruce  Springsteen',  'Wrecking Ball (Deluxe)');
INSERT INTO album (artist, title)  
    VALUES  ('Lana  Del  Rey',  'Born  To  Die');
INSERT INTO album (artist, title)  
    VALUES  ('Gotye',  'Making  Mirrors');

Agora que você já terminou de criar sua tabela, nós podemos começar a falar de consultas utilizando o pdo.

Tá, mas como eu faço um select utilizando PDO?

Depois de ter criado e adicionado alguns dados em uma tabela do nosso banco de dados, você pode usar uma consulta SELECT, com o método query() do PDO para obter esses dados.
O método query() retorna um conjunto de resultados com os dados retornados pelo MySQL, ou FALSE em caso de erro.

  
exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8

    // Define and perform the SQL SELECT query
    $sql = "SELECT * FROM `album` WHERE `id` IN (4, 5)";
    $resultado = $conn->query($sql);

    // verificamos se a nossa consulta foi executada com sucesso
    if($resultado !== false)
    {
        // Vamos imprimir os nossos resultados
        foreach($resultado as $row) {
            echo $row['id']. ' - '. $row['artist'] . ' - ' . $row['title'] . '
'; } } // Desconectamos do banco $conn = null; } catch(PDOException $e) { // imprimimos a nossa excecao echo $e->getMessage(); } ?>

caso você esteja utilizando a mesma tabela do início do post você verá na tela o seguinte resultado:

4 – Lana Del Rey – Born To Die
5 – Gotye – Making Mirrors

Claro que você também pode utilizar o while para percorrer o resultado, mas, para isso você precisa utilizar o método fetch().

  
exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8

    // Define and perform the SQL SELECT query
    $sql = "SELECT * FROM `album` WHERE `id` IN (4, 5)";
    $resultado = $conn->query($sql);

    // Vamos imprimir os nossos resultados
    while($row = $resultado->fetch()) {
        echo $row['id']. ' - '. $row['artist'] . ' - ' . $row['title'] . '
'; } // Desconecta $conn = null; } catch(PDOException $e) { // imprimimos a nossa excecao echo $e->getMessage(); } ?>

Mas qual é a desse método fetch()?

Ele retorna cada linha do conjunto de resultados, uma após a outra, ou se já não há mais linhas ele nos retorna FALSO. Este método contém várias constantes que determinam o modo para retornar as linhas: Array, Objeto, e etc… Este argumento é utilizado com a seguinte sintaxe:

  
fetch(PDO::FETCH_MODE)  

Agora para você poder visualizar as diferenças entre alguns dos modificadores do tipo de retorno do método fetch(), eu vou exemplificar alguns:

FETCHASSOC
Retorna um array indexado pelo nome da coluna como retornado no conjunto de resultados (similar ao mysql
fetch_assoc).

  
exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8

        // Define and perform the SQL SELECT query
        $sql = "SELECT * FROM `album`";
        $resultado = $conn->query($sql);

        // Vamos imprimir os nossos resultados
        while($row = $resultado->fetch(PDO::FETCH_ASSOC)) {
            echo $row['id']. ' - '. $row['artist'] . ' - ' . $row['title'] . '
'; } // Desconecta $conn = null; } catch(PDOException $e) { // imprimimos a nossa excecao echo $e->getMessage(); } ?>

o resultado do código acima será exibido conforme abaixo:

1 – The Military Wives – In My Dreams
2 – Adele – 21
3 – Bruce Springsteen – Wrecking Ball (Deluxe)
4 – Lana Del Rey – Born To Die
5 – Gotye – Making Mirrors

FETCH_OBJ
Retorna um objeto anônimo com nomes de propriedades que correspondem aos nomes das colunas retornadas no conjunto de resultados.

  
exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8

        // Define and perform the SQL SELECT query
        $sql = "SELECT * FROM `album`";
        $resultado = $conn->query($sql);

        // Vamos imprimir os nossos resultados
        while($row = $resultado->fetch(PDO::FETCH_OBJ)) {
            echo $row->id. ' - '. $row->artist . ' - ' . $row->title . '
'; } // Desconecta $conn = null; } catch(PDOException $e) { // imprimimos a nossa excecao echo $e->getMessage(); } ?>

o resultado do código acima será exibido conforme o codigo anterior, porém, dessa vez como o código acima nos mostra, nós acessamos os valores como um objeto e não mais como um array:

1 – The Military Wives – In My Dreams
2 – Adele – 21
3 – Bruce Springsteen – Wrecking Ball (Deluxe)
4 – Lana Del Rey – Born To Die
5 – Gotye – Making Mirrors

Por enquanto é só, até a próxima.

Publicado por

adlerdias

Oi! Sou Adler Dias, 30, programador, trabalho com desenvolvimento de sistemas há 10 anos. Apaixonado pela minha namorada Alyne. Meu principal hobby é a corrida, já corri uma são silvestre e...