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.