PHP: Conectar PHP a MySQL con PDO

Esta documentación forma parte de la guía Conectar a MySQL. Consulte la guía completa aquí: Aprenda a conectar a MySQL desde PHP usando MySQLi y PDO.

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero ofrece una plataforma PHP cloud diseñada para despliegues rápidos y fiables:

  • Despliegue su aplicación PHP en producción en segundos con un simple git push.
  • Utilice su propio dominio, con certificados HTTPS automáticos configurados para usted. No se requieren pasos manuales.
  • Confíe en copias de seguridad automáticas, actualizaciones con un solo clic y una tarifa clara y predecible. Stackhero se encarga de estos detalles para que usted pueda centrarse en su código.
  • Disfrute de un alto nivel de rendimiento y seguridad en una infraestructura privada y dedicada, diseñada específicamente para sus aplicaciones.

Optimice su flujo de trabajo y ahorre tiempo. Empezar con el PHP cloud hosting de Stackhero le llevará solo unos minutos.

PDO ofrece un método flexible para conectar PHP a MySQL. El ejemplo a continuación ilustra cómo usar PDO para establecer una conexión. También aborda posibles problemas de certificados SSL que pueden surgir si su sistema no tiene acceso a los certificados CA.

<?php

$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Para entornos de producción, considere crear una base de datos y un usuario dedicados

$dsn = "mysql:host=$hostname;dbname=$database";

$options = array(
  // Si encuentra un error como "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1...",
  // puede ser porque el directorio /etc/ssl/certs/ no tiene 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 una base de datos que ejecuta la versión ' . $version[0] . "\n";

?>

Si ve un error como Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed, es probable que el directorio /etc/ssl/certs/ de su sistema no contenga los certificados CA necesarios.

Si tiene acceso al sistema que ejecuta su código PHP, puede instalar los certificados de la siguiente manera:

  1. En Ubuntu/Debian, ejecute sudo apt-get install ca-certificates
  2. En Alpine Linux, ejecute apk add ca-certificates

Si no tiene acceso directo para instalar estos certificados en su sistema, puede instalar el certificado manualmente:

  1. Descargue el certificado a su ordenador: https://letsencrypt.org/certs/isrgrootx1.pem
  2. Añada el archivo isrgrootx1.pem a sus archivos de proyecto PHP.
  3. Comente la línea PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'
  4. Descomente la línea PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'