PHP: Connexion à MySQL
Apprenez comment vous connecter à MySQL depuis PHP en utilisant MySQLi et PDO
👋 Bienvenue dans la documentation Stackhero !
Stackhero offre une plateforme PHP cloud conçue pour des déploiements rapides et fiables :
- Déployez votre application PHP en production en quelques secondes avec un simple
git push.- Utilisez votre propre domaine, avec des certificats HTTPS automatiques configurés pour vous. Aucune intervention manuelle n'est nécessaire.
- Comptez sur des sauvegardes automatiques, des mises à jour en un clic et une tarification claire et prévisible. Stackhero s'occupe de ces aspects pour que vous puissiez vous concentrer sur votre code.
- Bénéficiez d'une performance et d'une sécurité élevées sur une infrastructure privée et dédiée, spécialement conçue pour vos applications.
Rendez votre flux de travail plus fluide et gagnez du temps. Prendre en main l'hébergement PHP cloud de Stackhero ne prend que quelques minutes.
Connexion de PHP à MySQL avec MySQLi (style orienté objet)
L'exemple suivant démontre comment connecter PHP à MySQL en utilisant MySQLi dans un style orienté objet. Il est préférable de créer une base de données et un utilisateur dédiés pour votre application plutôt que d'utiliser le compte 'root'. Cette approche améliore la sécurité de votre application.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // En production, créez une base de données et un utilisateur dédiés dans phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = $mysqli->real_connect($hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Erreur de connexion : ' . $mysqli->connect_error);
}
echo 'Connexion réussie... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
Connexion de PHP à MySQL avec MySQLi (style procédural)
Si vous préférez une approche procédurale, l'exemple ci-dessous montre comment établir une connexion en utilisant MySQLi dans un style procédural. Comme toujours, l'utilisation d'une base de données dédiée et d'un utilisateur restreint est recommandée pour une sécurité accrue.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Pour une sécurité accrue, créez une base de données et un utilisateur dédiés dans phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = mysqli_real_connect($mysqli, $hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Erreur de connexion : ' . mysqli_connect_error($mysqli));
}
echo 'Succès : ' . mysqli_get_host_info($mysqli) . "\n";
mysqli_close($mysqli);
?>
Connexion de PHP à MySQL avec PDO
PDO offre une méthode flexible pour connecter PHP à MySQL. L'exemple ci-dessous illustre comment utiliser PDO pour établir une connexion. Il aborde également les problèmes potentiels de certificat SSL qui peuvent survenir si votre système n'a pas accès aux certificats CA.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Pour les environnements de production, envisagez de créer une base de données et un utilisateur dédiés
$dsn = "mysql:host=$hostname;dbname=$database";
$options = array(
// Si vous rencontrez une erreur comme "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1...",
// cela peut être dû à l'absence de certificats CA dans le répertoire /etc/ssl/certs/
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 'Vous êtes connecté à une base de données exécutant la version ' . $version[0] . "\n";
?>
Gestion de l'erreur "SSL operation failed with code 1"
Si vous voyez une erreur telle que Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed, il est probable que le répertoire /etc/ssl/certs/ de votre système ne contienne pas les certificats CA nécessaires.
Si vous avez accès au système exécutant votre code PHP, vous pouvez installer les certificats comme suit :
- Sur Ubuntu/Debian, exécutez
sudo apt-get install ca-certificates - Sur Alpine Linux, exécutez
apk add ca-certificates
Si vous n'avez pas d'accès direct pour installer ces certificats sur votre système, vous pouvez installer le certificat manuellement :
- Téléchargez le certificat sur votre ordinateur : https://letsencrypt.org/certs/isrgrootx1.pem
- Ajoutez le fichier
isrgrootx1.pemà vos fichiers de projet PHP. - Commentez la ligne
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/' - Décommentez la ligne
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'
Connexion de PHP à MySQL en utilisant des identifiants depuis des variables d'environnement
Pour une sécurité renforcée et une gestion de configuration plus facile, il est recommandé d'éviter de coder en dur vos identifiants dans votre code source. Au lieu de cela, récupérez ces paramètres depuis des variables d'environnement comme montré ci-dessous :
<?php
$hostname = getenv('STACKHERO_MYSQL_HOST');
$user = getenv('STACKHERO_MYSQL_USER');
$password = getenv('STACKHERO_MYSQL_PASSWORD');
$database = getenv('STACKHERO_MYSQL_USER'); // Par convention, le nom de la base de données correspond au nom d'utilisateur
?>
L'utilisation de variables d'environnement aide à maintenir la sécurité de vos identifiants et rend votre configuration plus adaptable à différents environnements.