Conectando-se ao MySQL

Resumo : neste tutorial você aprenderá passo a passo como conectar-se a um banco de dados MySQL a partir de PHP usando PDO.

Pré-requisitos

Antes de se conectar a um servidor de banco de dados MySQL, você precisa ter:

  • Um servidor de banco de dados MySQL, um banco de dados e uma conta que tenha acesso ao banco de dados.
  • Driver PDO MySQL habilitado no arquivo php.ini

1) Configurando parâmetros do banco de dados MySQL

Suponha que você tenha um servidor de banco de dados MySQL local que possua as seguintes informações:

  • O anfitrião é localhost.
  • O bookdbbanco de dados no servidor de banco de dados local.
  • A conta com o usuário roote senha 'S@cr@t1!'que pode acessar o bookdbbanco de dados.

No PHP, você pode criar um config.phparquivo e colocar os parâmetros do banco de dados:

<?php

$host = 'localhost';
$db = 'bookdb';
$user = 'root';
$password = 'S@cr@t1!';Linguagem de código:  HTML, XML  ( xml )

Para usar os parâmetros do banco de dados, você pode incluir o config.phparquivo usando a requireconstrução:

<?php

require 'config.php';Linguagem de código:  HTML, XML  ( xml )

2) Habilite o driver PDO_MySQL

PDO_MYSQL é um driver que implementa a interface PDO. PDO usa o driver PDO_MYSQL para se conectar a um banco de dados MySQL.

Para verificar se o driver PDO_MYSQL está habilitado, abra o php.iniarquivo. O php.iniarquivo geralmente está localizado no phpdiretório. Por exemplo, você pode encontrar o php.iniarquivo no C:\xampp\phpdiretório se usar XAMPPno Windows.

O seguinte mostra a linha de extensão no  php.ini arquivo:

;extension=php_pdo_mysql.dll

Para habilitar a extensão, você precisa descomentá-la removendo o ponto e vírgula ( ;) do início da linha assim:

extension=php_pdo_mysql.dll

Depois disso, você precisa reiniciar o servidor web para que a alteração tenha efeito.

Nome da fonte de dados MySQL

O PDO usa um nome de fonte de dados (DSN) que contém as seguintes informações:

  • O host do servidor de banco de dados
  • O nome do banco de dados
  • O usuário
  • A senha
  • e outros parâmetros, como conjuntos de caracteres, etc.

O PDO usa essas informações para fazer uma conexão com o servidor de banco de dados. Para se conectar ao servidor de banco de dados MySQL, use o seguinte formato de nome de fonte de dados:

"mysql:host=host_name;dbname=db_name;charset=UTF8"Linguagem de código:  JSON/JSON com comentários  ( json )

Por exemplo:

$dsn = "mysql:host=localhost;dbname=bookdb;charset=UTF8";Linguagem de código:  PHP  ( php )

Observe que o charset UTF-8 define o conjunto de caracteres da conexão com o banco de dados como UTF-8.

Conectando-se ao MySQL

O index.php script a seguir ilustra como conectar-se ao bookdbbanco de dados no servidor de banco de dados MySQL com a root conta:

<?php

require 'config.php';

$dsn = "mysql:host=$host;dbname=$db;charset=UTF8";

try {
	$pdo = new PDO($dsn, $user, $password);

	if ($pdo) {
		echo "Connected to the $db database successfully!";
	}
} catch (PDOException $e) {
	echo $e->getMessage();
}Linguagem de código:  HTML, XML  ( xml )

Como funciona.

  • Primeiro, crie um novo objeto PDO com o nome da fonte de dados, usuário e senha. O objeto PDO é uma instância da PDOclasse.
  • Em segundo lugar, mostre a mensagem de sucesso se a conexão for estabelecida com sucesso ou uma mensagem de erro se ocorrer um erro.

Se você tiver tudo configurado corretamente, verá a seguinte mensagem:

Connected to the bookdb database successfully!Linguagem de código:  texto simples  ( texto simples )

Estratégias de tratamento de erros

O PDO oferece suporte a três estratégias diferentes de tratamento de erros:

  • PDO::ERROR_SILENT– PDO define um código de erro para inspeção usando os métodos PDO::errorCode()e PDO::errorInfo(). Este PDO::ERROR_SILENTé o modo padrão.
  • PDO::ERRMODE_WARNING– Além de definir o código de erro, o PDO emitirá uma E_WARNINGmensagem.
  • PDO::ERRMODE_EXCEPTION– Além de definir o código de erro, o PDO irá gerar um arquivo PDOException.

Para definir a estratégia de tratamento de erros, você pode passar um array associativo para o construtor PDO assim:

$pdo = new PDO($dsn, $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);Linguagem de código:  PHP  ( php )

Ou você pode usar o setAttribute()método da instância PDO:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);Linguagem de código:  PHP  ( php )

Solução de problemas

Existem alguns problemas comuns quando você se conecta a um banco de dados MySQL:

Se o driver MySQL não estiver habilitado no php.ini arquivo, você receberá a mensagem de erro:

could not find driverLinguagem de código:  texto simples  ( texto simples )

Se você fornecer uma senha incorreta, receberá a seguinte mensagem de erro:

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)Linguagem de código:  texto simples  ( texto simples )

Se você fornecer um nome de banco de dados inválido ou se o banco de dados não existir, você receberá a seguinte mensagem de erro:

SQLSTATE[HY000] [1049] Unknown database 'bookdb'Linguagem de código:  texto simples  ( texto simples )

Se você fornecer um nome de host de banco de dados inválido, a seguinte mensagem de erro será exibida:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.Linguagem de código:  texto simples  ( texto simples )

Resumo

  • Habilite o PDO_MYSQLdriver no php.iniarquivo para conexão com um banco de dados MySQL do PHP PDO.
  • Crie uma instância da classe PDO para fazer uma conexão com um banco de dados MySQL.
  • Use o construtor PDO ou o setAttribute()método para definir uma estratégia de tratamento de erros.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *