Conectando ao MySQL utilizando o PDO

Através do driver PDO podemos nos conectar a diferentes bancos de dados e realizar transações seguras.

Simplificando o desenvolvimento de APIs PHP com Swagger

Para se conectar a um banco de dados do tipo MySQL, por exemplo, é necessário tanto um driver quanto algumas linhas de código. Um driver é uma aplicação responsável por conversar diretamente com um determinado banco de dados, assim podemos escrever algumas linhas de códigos e enviar informações cruciais para a nossa transação.

O PDO é um recurso muito popular e utilizado amplamente no PHP, bem como em frameworks atuais. Não se trata apenas de uma classe de conexão, mas sim de uma opção orientada a objetos e que nos permite tratar as operações de forma segura utilizando o recurso de Prepared Statement.

Bem, para se conectar a um banco MySQL, podemos utilizar a classe abaixo.

<?php

class Database
{
    private string $host;
    private string $base;
    private string $user;
    private string $pass;

    private PDO $pdo;

    /**
     * Inicializa as propriedades da classe e chama o método de conexão
     *
     * @return void
     */
    public function __construct()
    {
        $this->host = 'localhost'; //127.0.0.1
        $this->base = 'aula_php_pdo';
        $this->user = 'root';
        $this->pass = '';

        $this->connect();
    }

    /**
     * Tenta se conectar ao banco de dados
     *
     * @return void
     */
    private function connect(): void
    {
        try {
            $str = sprintf('mysql:host=%s;dbname=%s', $this->host, $this->base);

            $this->pdo = new PDO($str, $this->user, $this->pass);

            $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $ex) {
            print_r($ex->getMessage());
        }
    }

    public function query(string $str, array $params)
    {
        $stmt = $this->pdo->prepare($str);

        $stmt->execute($params);

        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}

Agora podemos fazer uma nova instância desta classe e chamar os métodos que criamos anteriormente.

<?php

require_once('Database.php');

$database = new Database();

$sql = 'SELECT id, nome FROM aluno ORDER BY :order ASC';

$result = $database->query($sql, [':order' => 'nome']);

echo '<pre>';
print_r($result);
echo '</pre>';

Note que para a conexão, tudo o que precisamos fazer é dar um new PDO e passar os parâmetros. No exemplo que criamos, utilizamos a orientação à objetos para criar a nossa classe e métodos que interagem com o PDO.

Para conferir com mais detalhes como o nosso código foi criado, assista a nossa videoaula abaixo.