Categories
Programação

Conectando a um Banco de Dados com PDO

O PDO tem um método de conexão sofisticado porém simples de usar, chamado Data Source Name (DSN). Tudo o que você fazer para utilizá-lo é inserir os valores para configuração nos seus locais adequados.

Para entendermos melhor o que precisamos para criar uma instância PDO vamos ver seu método construtor abaixo:

public function __construct(
    $dsn,
    $username = null,
    $passwd = null,
    $options = null
)

Perceba que ele recebe quatro parâmetros, sendo apenas o primero “dsn” obrigatório. Vamos ver cada um deles…

DSN: Como valores do tipo string, em $dsn vão: o driver do banco de dados, host, nome do banco (schema), porta, definição de charset, bem como o unix_socket quando for o caso.

$dsn = "mysql:host=localhost;dbname=test;port=3306;charset=utf8mb4";

Usuário e senha: Também como strings, passe $username e $password para conexão ao banco.

$username = "my_user";
$password = "my_password";

Options: Por último podemos passar aqui uma infinidade de outros parâmetros, dentro do último parâmetro $options, que se trata de um array.

$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

Pronto, agora já temos tudo o que precisamos para fazer nossa conexão… O código completo ficaria assim:

$dsn = "mysql:host=localhost;dbname=test;port=3306;charset=utf8mb4";

$username = 'my_username';
$password = 'my_password';

$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
     $pdo = new PDO($dsn, $username, $password, $options);
} catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

Com nossas quatro variáveis ​​mencionadas acima corretamente definidas, teremos o objeto $pdo criado, como uma nova instância da classe PDO.

Para nos certificar que tudo ocorreu bem, podemos ver as informações desse novo objeto adicionando ao final do nosso código a função de manipulação de variáveis var_dump():

var_dump($pdo);

Como resultado teremos impresso na tela:

object(PDO)#1 (0) { }

Tudo certo! Vamos continuar…

Ah, sim, uma dica para quem por algum motivo ainda está usando PHP abaixo da versão 5.3.6… Atualize para a 7.0! No mínimo! Essa semana! Por favor…

Não é que eu queira, eu preciso…

Mas sério, se em versões muito antigas do PHP, você tiver problemas para definir o tipo de charset no MySQL usando o DSN, você pode fazer isso através de uma query SQL:

$pdo->exec("set names utf8");

Em seguida: Executando queries com PDO

Leave a Reply

Your email address will not be published. Required fields are marked *