Tagphp data objects

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.

PHP – PDO (PHP Data Objects)

O que é PDO?
PDO é um acrônimo para PHP Data Objects. PDO é uma forma consistente para acessar bancos de dados. Isso significa que os desenvolvedores podem escrever código portável muito mais fácil e eficientemente. Mas, é importante entendermos que quando um código não é portável isso faz com que aconteçam muitos problemas em relação a manutenção, gerenciamento de versões múltiplas, legibilidade ruim, compreensibilidade do código.

PDO não é uma camada de abstração como PearDB. PDO está mais para uma camada de acesso a dados que utiliza uma API (Application Programming Interface) unificada.

Como eu habilito o PDO?

Em um servidor Windows, você pode adicionar ou remover o comentário das seguintes linhas no seu php.ini

extension=php_pdo.dll
extension=php_pdo_mysql.dll

Em um servidor Linux, você pode compilar o php com a seguinte opção –with-pdo-mysql, e, no seu php.ini adicione ou remova o comentário as seguintes linhas:

extension=pdo.so
extension=pdo_mysql.so

Claro que você pode habilitar todos os drivers que achar necessário, mas como o processo é o mesmo, tudo que você vai precisar é uma lista dos drivers disponíveis, caso já não estejam comentadas no seu php.ini, que você pode encontrar aqui.

Para concluir essa parte é necessário que você reinicie o seu WebServer, ou, pelo menos recarregue as configurações do mesmo.

Mas como eu posso testar se o PDO foi habilitado?

Para verificarmos Aqui duas maneiras podem ser utilizadas.

O velho phpinfo(), para isso, é só criarmos um arquivo php.

<?php  
    echo phpinfo();
?>

Ou então um pequeno script que nos mostre os drivers disponíveis.

<?php  
    foreach(PDO::getAvailableDrivers() as $driverDisponivel)
    {
        echo $driverDisponivel.'<br />';
    }
?>

No caso da configuração que você fez seguindo o post, é esperado que mostre apenas mysql, conforme o exemplo da saída abaixo:

mysql

Porém, ele irá listar todos os drivers que você habilitou.

Por enquanto é só, no próximo post fazermos a conexão com o banco de dados, e veremos como fazer SELECT’s, INSERT’s e etc…

© 2017 Adler Dias

Theme by Anders NorénUp ↑