PHP: Conectar a MySQL
Aprenda a conectar a MySQL desde PHP usando MySQLi y PDO
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución PHP cloud lista para usar que proporciona una serie de beneficios, incluyendo:
- Despliegue su aplicación en segundos con un simple
git push.- Use su propio nombre de dominio y benefíciese de la configuración automática de certificados HTTPS para una mayor seguridad.
- Disfrute de la tranquilidad con copias de seguridad automáticas, actualizaciones con un clic, y una tarificación sencilla, transparente y predecible.
- Obtenga un rendimiento óptimo y una seguridad robusta gracias a una VM privada y dedicada.
Ahorre tiempo y simplifique su vida: solo toma 5 minutos probar la solución de PHP cloud hosting de Stackhero.
Conectar PHP a MySQL con MySQLi (estilo orientado a objetos)
El siguiente ejemplo demuestra cómo conectar PHP a MySQL usando MySQLi en un estilo orientado a objetos. Es una buena práctica crear una base de datos y un usuario dedicados para su aplicación en lugar de usar la cuenta 'root'. Este enfoque mejora la seguridad de su aplicación.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // En producción, cree una base de datos y un usuario dedicados en phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = $mysqli->real_connect($hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Error de conexión: ' . $mysqli->connect_error);
}
echo 'Conexión exitosa... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
Conectar PHP a MySQL con MySQLi (estilo procedural)
Si prefiere un enfoque procedural, el ejemplo a continuación muestra cómo establecer una conexión usando MySQLi en un estilo procedural. Como siempre, se recomienda usar una base de datos dedicada y un usuario restringido para mejorar la seguridad.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Para mejorar la seguridad, cree una base de datos y un usuario dedicados en phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = mysqli_real_connect($mysqli, $hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Error de conexión: ' . mysqli_connect_error($mysqli));
}
echo 'Éxito: ' . mysqli_get_host_info($mysqli) . "\n";
mysqli_close($mysqli);
?>
Conectar PHP a MySQL con PDO
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";
?>
Manejo del error "SSL operation failed with code 1"
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:
- En Ubuntu/Debian, ejecute
sudo apt-get install ca-certificates - 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:
- Descargue el certificado a su ordenador: https://letsencrypt.org/certs/isrgrootx1.pem
- Añada el archivo
isrgrootx1.pema sus archivos de proyecto PHP. - Comente la línea
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/' - Descomente la línea
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'
Conectar PHP a MySQL usando credenciales de variables de entorno
Para mejorar la seguridad y facilitar la gestión de la configuración, se recomienda evitar codificar sus credenciales en su código fuente. En su lugar, recupere estos ajustes de las variables de entorno como se muestra a continuación:
<?php
$hostname = getenv('STACKHERO_MYSQL_HOST');
$user = getenv('STACKHERO_MYSQL_USER');
$password = getenv('STACKHERO_MYSQL_PASSWORD');
$database = getenv('STACKHERO_MYSQL_USER'); // Por convención, el nombre de la base de datos coincide con el nombre de usuario
?>
El uso de variables de entorno ayuda a mantener la seguridad de sus credenciales y hace que su configuración sea más adaptable a diferentes entornos.