PHP: Conectar PHP ao MySQL com PDO

Esta documentação faz parte do guia Conectar ao MySQL. Consulte o guia completo aqui: 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.

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";

?>

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:

  1. No Ubuntu/Debian, execute sudo apt-get install ca-certificates
  2. 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:

  1. Faça o download do certificado para o seu computador: https://letsencrypt.org/certs/isrgrootx1.pem
  2. Adicione o ficheiro isrgrootx1.pem aos seus ficheiros de projeto PHP.
  3. Comente a linha PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'
  4. Descomente a linha PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'