PHP: Connecter PHP à MySQL avec PDO

Cette documentation fait partie du guide Se connecter à MySQL. Consultez le guide complet ici : Découvrez comment connecter PHP à MySQL avec MySQLi et PDO.

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose 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 étape manuelle n'est nécessaire.
  • Profitez de sauvegardes automatiques, de mises à jour en un clic et d'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, conçue spécifiquement pour vos applications.

Simplifiez votre workflow et gagnez du temps. Prendre en main l'hébergement PHP cloud de Stackhero ne prend que quelques minutes.

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 éventuels problèmes de certificat SSL qui peuvent survenir si votre système ne dispose pas des certificats d'autorité (CA).

<?php

$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // En environnement de production, pensez à 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 du type "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 en version ' . $version[0] . "\n";

?>

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 contient pas les certificats CA nécessaires.

Si vous avez accès au système qui exécute votre code PHP, vous pouvez installer les certificats comme suit :

  1. Sur Ubuntu/Debian, exécutez sudo apt-get install ca-certificates
  2. Sur Alpine Linux, exécutez apk add ca-certificates

Si vous n'avez pas la possibilité d'installer ces certificats directement sur votre système, vous pouvez installer le certificat manuellement :

  1. Téléchargez le certificat sur votre ordinateur : https://letsencrypt.org/certs/isrgrootx1.pem
  2. Ajoutez le fichier isrgrootx1.pem dans les fichiers de votre projet PHP.
  3. Commentez la ligne PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'
  4. Décommentez la ligne PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'