PHP: Connexion à MySQL
Apprenez comment vous connecter à MySQL depuis PHP en utilisant MySQLi et PDO
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution PHP cloud prête à l'emploi qui offre de nombreux avantages, notamment :
- Déployez votre application en quelques secondes avec un simple
git push.- Utilisez votre propre nom de domaine et bénéficiez de la configuration automatique des certificats HTTPS pour une sécurité renforcée.
- Profitez de la tranquillité d'esprit avec des sauvegardes automatiques, des mises à jour en un clic, et une tarification simple, transparente et prévisible.
- Obtenez des performances optimales et une sécurité robuste grâce à une VM privée et dédiée.
Gagnez du temps et simplifiez-vous la vie : il ne faut que 5 minutes pour essayer la solution PHP cloud hosting de Stackhero !
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.