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
mysqlie verificando erros - O estilo orientado a objetos do
mysqlie 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:
| API | Estilo | Prepared statements | Funciona com outros bancos |
|---|---|---|---|
mysqli (procedural) | Chamadas de função como mysqli_connect() | Sim | Apenas MySQL/MariaDB |
mysqli (orientado a objetos) | Métodos em um objeto mysqli | Sim | Apenas MySQL/MariaDB |
| PDO | Métodos em um objeto PDO | Sim | Muitos 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.