PHP: Conectar ao MySQL
Aprenda a conectar ao MySQL a partir do PHP usando MySQLi e PDO
👋 Bem-vindo à documentação da Stackhero!
A Stackhero disponibiliza uma plataforma PHP cloud concebida para implementações rápidas e fiáveis:
- Implemente a sua aplicação PHP em produção em segundos com um simples
git push.- Utilize o seu próprio domínio, com certificados HTTPS automáticos configurados para si. Não são necessários passos manuais.
- Conte com backups automáticos, atualizações com um clique e preços claros e previsíveis. A Stackhero trata destes detalhes, para que se possa concentrar no seu código.
- Beneficie de elevada performance e segurança numa infraestrutura privada e dedicada, construída especificamente para as suas aplicações.
Torne o seu fluxo de trabalho mais eficiente e poupe tempo. Começar a utilizar o PHP cloud hosting da Stackhero demora apenas alguns minutos.
Conectar PHP ao MySQL com MySQLi (estilo orientado a objetos)
O exemplo seguinte demonstra como conectar PHP ao MySQL usando MySQLi em um estilo orientado a objetos. É uma boa prática criar uma base de dados e um utilizador dedicados para a sua aplicação em vez de usar a conta 'root'. Esta abordagem melhora a segurança da sua aplicação.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Em produção, crie uma base de dados e um utilizador dedicados no phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = $mysqli->real_connect($hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Erro de conexão: ' . $mysqli->connect_error);
}
echo 'Conexão bem-sucedida... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
Conectar PHP ao MySQL com MySQLi (estilo procedural)
Se preferir uma abordagem procedural, o exemplo abaixo mostra como estabelecer uma conexão usando MySQLi em um estilo procedural. Como sempre, é recomendada a utilização de uma base de dados dedicada e um utilizador restrito para maior segurança.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Para maior segurança, crie uma base de dados e um utilizador dedicados no phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = mysqli_real_connect($mysqli, $hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Erro de conexão: ' . mysqli_connect_error($mysqli));
}
echo 'Sucesso: ' . mysqli_get_host_info($mysqli) . "\n";
mysqli_close($mysqli);
?>
Conectar PHP ao MySQL com PDO
PDO oferece um método flexível para conectar PHP ao MySQL. O exemplo abaixo ilustra como usar PDO para estabelecer uma conexão. Também aborda potenciais problemas de certificado SSL que podem surgir se o seu sistema não tiver acesso a certificados CA.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Para ambientes de produção, considere criar uma base de dados e um utilizador dedicados
$dsn = "mysql:host=$hostname;dbname=$database";
$options = array(
// Se encontrar um erro como "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1...",
// pode ser porque o diretório /etc/ssl/certs/ está sem certificados CA
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/',
// PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem',
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => true,
);
$pdo = new PDO($dsn, $user, $password, $options);
$stm = $pdo->query('SELECT VERSION()');
$version = $stm->fetch();
echo 'Está conectado a uma base de dados que executa a versão ' . $version[0] . "\n";
?>
Tratamento do erro "SSL operation failed with code 1"
Se vir um erro como Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed, é provável que o diretório /etc/ssl/certs/ do seu sistema não contenha os certificados CA necessários.
Se tiver acesso ao sistema que executa o seu código PHP, pode instalar os certificados da seguinte forma:
- No Ubuntu/Debian, execute
sudo apt-get install ca-certificates - No Alpine Linux, execute
apk add ca-certificates
Se não tiver acesso direto para instalar estes certificados no seu sistema, pode instalar o certificado manualmente:
- Faça o download do certificado para o seu computador: https://letsencrypt.org/certs/isrgrootx1.pem
- Adicione o ficheiro
isrgrootx1.pemaos seus ficheiros de projeto PHP. - Comente a linha
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/' - Descomente a linha
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'
Conectar PHP ao MySQL usando credenciais de variáveis de ambiente
Para maior segurança e gestão de configuração mais fácil, é recomendado evitar codificar as suas credenciais no código fonte. Em vez disso, recupere estas definições de variáveis de ambiente como mostrado abaixo:
<?php
$hostname = getenv('STACKHERO_MYSQL_HOST');
$user = getenv('STACKHERO_MYSQL_USER');
$password = getenv('STACKHERO_MYSQL_PASSWORD');
$database = getenv('STACKHERO_MYSQL_USER'); // Por convenção, o nome da base de dados corresponde ao nome de utilizador
?>
Usar variáveis de ambiente ajuda a manter a segurança das suas credenciais e torna a sua configuração mais adaptável a diferentes ambientes.