W3docs

Criando uma Conexão PHP e MySQL

Aprenda a conectar PHP ao MySQL para criar aplicações web dinâmicas. Veja as três APIs de conexão, prepared statements e boas práticas de segurança.

Estabelecer uma conexão entre PHP e MySQL é essencial para criar aplicações web dinâmicas. Com essa conexão, você pode acessar e manipular dados armazenados em um banco de dados MySQL por meio de scripts PHP. Este artigo apresenta todas as formas de conectar, quando usar cada uma e as práticas de segurança que mantêm sua aplicação protegida.

Esta página aborda:

  • As três APIs de conexão que o PHP oferece e qual escolher
  • Conectando com o estilo procedural do mysqli e verificando erros
  • O estilo orientado a objetos do mysqli e o estilo moderno do PDO
  • Selecionando um banco de dados, executando a primeira consulta e fechando a conexão
  • Armadilhas comuns: conjuntos de caracteres, relatório de erros e tratamento de credenciais

Pré-requisitos

Antes de criar a conexão, é importante garantir que você tenha os seguintes pré-requisitos:

  • Um servidor web com PHP instalado (como Apache ou Nginx)
  • Um banco de dados MySQL
  • Extensão PHP MySQL (incluída na maioria das instalações PHP)

Entendendo a Conexão PHP e MySQL

Uma conexão PHP e MySQL envolve dois componentes principais: o PHP e um banco de dados MySQL. O PHP é uma linguagem de script do lado do servidor usada para criar páginas web dinâmicas, enquanto o banco de dados MySQL é usado para armazenar e recuperar dados.

O PHP oferece três formas de comunicação com o MySQL. Conhecer a diferença antecipadamente evita reescrever código depois:

APIEstiloPrepared statementsFunciona com outros bancos
mysqli (procedural)Chamadas de função como mysqli_connect()SimApenas MySQL/MariaDB
mysqli (orientado a objetos)Métodos em um objeto mysqliSimApenas MySQL/MariaDB
PDOMétodos em um objeto PDOSimMuitos bancos (uma API)

As antigas funções mysql_* (sem o i) foram removidas no PHP 7 — nunca as utilize. Para novos projetos, prefira PDO ou mysqli orientado a objetos porque eles suportam prepared statements de forma limpa, que são sua principal defesa contra injeção de SQL. Esta página mostra os três para que você possa ler e manter qualquer base de código. Para uma análise mais detalhada da extensão mysqli, consulte PHP MySQLi.

Estabelecendo uma Conexão

Para estabelecer uma conexão entre PHP e MySQL, você precisará usar a função mysqli_connect(). Essa função aceita vários parâmetros, incluindo o nome do servidor, nome de usuário e senha.

Aqui está um exemplo de como usar a função mysqli_connect():

Exemplo PHP de como usar a função mysqli_connect

<?php 
$server = "localhost";
$username = "your_username";
$password = "your_password";

// Establish connection 
$conn = mysqli_connect($server, $username, $password); 

// Check connection 
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

No exemplo acima, $server é definido como localhost, que é o local padrão do servidor MySQL. $username e $password devem ser definidos com o nome de usuário e a senha usados para acessar o banco de dados.

Após estabelecer a conexão, usamos a função mysqli_connect_error() para verificar se a conexão foi bem-sucedida. Se a conexão falhar, o script exibe uma mensagem de erro e encerra a conexão. Se a conexão for bem-sucedida, o script exibe "Connected successfully".

Dica: Você também pode passar o nome do banco de dados como quarto parâmetro para mysqli_connect() a fim de simplificar a lógica de conexão e ignorar uma etapa separada de seleção de banco de dados: $conn = mysqli_connect($server, $username, $password, "your_database");

mysqli Orientado a Objetos

A mesma conexão no estilo orientado a objetos cria um objeto mysqli com new. Muitos desenvolvedores o consideram mais limpo porque a conexão e seus métodos ficam em um único objeto:

<?php
$conn = new mysqli("localhost", "your_username", "your_password", "your_database");

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

Conectando com PDO

PDO (PHP Data Objects) oferece uma API consistente para vários bancos de dados. Os detalhes da conexão são inseridos em uma string DSN (Data Source Name):

<?php
$dsn = "mysql:host=localhost;dbname=your_database;charset=utf8mb4";

try {
    $pdo = new PDO($dsn, "your_username", "your_password");
    // Make PDO throw exceptions on error instead of failing silently
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
} catch (PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}
?>

Defina o conjunto de caracteres. Sempre especifique charset=utf8mb4 (PDO) ou chame $conn->set_charset("utf8mb4") (mysqli). Sem isso, caracteres multibyte e emojis podem ser armazenados ou retornados incorretamente.

Selecionando um Banco de Dados

Após estabelecer uma conexão com o servidor MySQL, você precisará selecionar um banco de dados para trabalhar. Você pode fazer isso usando a função mysqli_select_db().

Aqui está um exemplo de como usar a função mysqli_select_db():

Exemplo PHP de como usar a função mysqli_select_db

<?php 
$server = "localhost";
$username = "your_username";
$password = "your_password";
$db = "your_database";

// Establish connection 
$conn = mysqli_connect($server, $username, $password); 

// Check connection 
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// Select database 
$select_db = mysqli_select_db($conn, $db); 

// Check database selection 
if (!$select_db) {
    die("Error selecting database: " . mysqli_error($conn));
}
echo "Database selected successfully";
?>

No exemplo acima, $db é definido com o nome do banco de dados que você deseja selecionar. Após estabelecer a conexão, usamos a função mysqli_select_db() para selecionar o banco de dados. A função aceita dois parâmetros: a conexão e o nome do banco de dados.

Em seguida, usamos a função mysqli_error() para verificar se o banco de dados foi selecionado com sucesso. Se a seleção falhar, o script exibe uma mensagem de erro e encerra a conexão. Se a seleção for bem-sucedida, o script exibe "Database selected successfully".

Executando Sua Primeira Consulta

Uma conexão só é útil quando você executa uma consulta. O exemplo abaixo seleciona linhas de uma tabela users e itera sobre os resultados. Como o valor vem de uma variável, ele usa um prepared statement para que a entrada do usuário nunca possa ser injetada no SQL:

<?php
$conn = new mysqli("localhost", "your_username", "your_password", "your_database");
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Prepare a parameterized query
$stmt = $conn->prepare("SELECT id, name FROM users WHERE id > ?");
$stmt->bind_param("i", $minId); // "i" = integer parameter
$minId = 0;
$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo $row["id"] . ": " . $row["name"] . "\n";
}

$stmt->close();
$conn->close();
?>

Nunca construa consultas concatenando entrada bruta do usuário na string SQL — isso abre a porta para injeção de SQL. Para aprofundar-se na vinculação de parâmetros, consulte MySQL Prepared Statements. Para o conjunto completo de operações CRUD, consulte Inserir Dados e Selecionar Dados.

Fechando a Conexão

Quando você terminar de trabalhar com um banco de dados MySQL, é importante fechar a conexão. Isso ajuda a liberar recursos e evitar possíveis problemas de segurança.

Para fechar a conexão, você pode usar a função mysqli_close(). Aqui está um exemplo de como usar a função mysqli_close():

Exemplo PHP de como usar a função mysqli_close

<?php 
$server = "localhost";
$username = "your_username";
$password = "your_password";
$db = "your_database";

// Establish connection 
$conn = mysqli_connect($server, $username, $password); 

// Check connection 
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// Select database 
$select_db = mysqli_select_db($conn, $db); 

// Check database selection 
if (!$select_db) {
    die("Error selecting database: " . mysqli_error($conn));
}

// Close connection 
mysqli_close($conn); 
echo "Connection closed";
?>

No exemplo acima, usamos a função mysqli_close() para fechar a conexão. A função aceita um parâmetro: a conexão. O script então exibe "Connection closed" para confirmar que a conexão foi encerrada.

Nota de Segurança: Em ambientes de produção, evite codificar credenciais diretamente no código. Use variáveis de ambiente ou arquivos de configuração para armazenar dados sensíveis.

Conclusão

Neste artigo, abordamos os pré-requisitos, as três APIs de conexão (mysqli procedural, mysqli orientado a objetos e PDO), como estabelecer uma conexão, selecionar um banco de dados, executar uma consulta parametrizada segura e fechar a conexão. Agora você deve ser capaz de conectar o PHP ao MySQL e começar a realizar operações CRUD.

Para aplicações PHP modernas, prefira PDO ou a interface mysqli orientada a objetos com prepared statements: eles oferecem melhor segurança e tratamento de erros mais claro. A partir daqui, continue com Criar um Banco de Dados MySQL, Criar uma Tabela e a visão geral do MySQL Database.

Prática

Prática
O que é necessário para conectar a um banco de dados MySQL usando PHP?
O que é necessário para conectar a um banco de dados MySQL usando PHP?
Was this page helpful?