Vous souhaitez vous connecter à une base de données MySQL en PHP ? Dans cet article vous trouverez le code pour réaliser cette étape.

La connexion à sa base de données est une étape courante qui permet de récupérer des informations dans cette dernière par le biais d’une communication entre le langage PHP et MySQL. Le langage PHP a évolué dans le temps, et la méthode pour se connecter (le code) à également évolué.

Je m’abonne à la chaîne NumelionWeb



Cet article est une mise à jour d’un ancien article datant de 2013 qui présentait à l’époque le code complet pour se connecter. Celui-ci a été retiré de l’article, car il est devenu devient obsolète.

Comment se connecter à une base de données MySQL en PHP ?

Désormais, pour se connecter à une base de données MySQL en PHP on utilise l’extension PDO. Celle-ci permet une connexion de manière simple et sécurisée au serveur. Avec cette extension, il est possible de se connecter sur différents types de serveur SGBDR (Système de gestion de bases de données relationnelles).

Se connecter à une base de données MySQL en PHP
Se connecter à une base de données MySQL en PHP

Vous pourrez par exemple vous connecter sur un serveur MySQL, SQLite, Microsoft SQL, ODBC, Firebird, PostgreSQL…

Vous trouverez ci-dessous les différentes étapes pour établir la connexion entre notre script et la base de données. La base de données utilisée est celle d’un commerce, et la table sélectionnée sera celle des clients. On peut par exemple manipuler les clients pour extraire, filtrer, calculer… des informations sur ces derniers.

La base de données qui sera utilisée est fictive. Ci-dessous vous trouverez un extrait de la table « clients », cela vous permettra de comprendre sa structure.

Base de données MySQL
Base de données MySQL

Tester l’extension PDO

Dans un premier temps, il faut tester l’extension PDO pour s’assurer que celle-ci est bien fonctionnelle sur le serveur. La plupart des serveurs web l’ont installés par défaut, mais il vaut mieux s’en assurer afin d’éviter une erreur inutile.

Pour cela, vous devez utiliser le code ci-dessous.

<?php
if (extension_loaded ('PDO')) {
echo 'PDO OK'; 
} else {
echo 'PDO KO'; 
}
?>

Si le résultat est positif, vous pouvez passer à la prochaine étape. Dans le cas contraire, vous allez devoir activer l’extension directement dans le fichier php.ini. Selon le serveur web que vous utilisez, son endroit diffère. Vous pouvez donc consulter la documentation officielle.

Paramétrer la connexion

Pour établir la connexion, vous allez devoir créer un DSN. Il s’agit en anglais du « Data Source Name ». Ce sont des paramètres permettant d’établir la connexion. Vous allez devoir renseigner plusieurs informations.

La première est le type de base de données avec lequel vous allez communiquer. Ici, ce sera MySQL. Vous allez ensuite devoir communiquer le nom de la base de données. Vous allez pouvoir ajouter des éléments comme le port de connexion.

Un autre paramètre qu’il est fortement conseillé d’ajouter est l’encodage. Par exemple l’UTF-8. Cela évitera des soucis d’affichage par la suite. Ci-dessous, voici un exemple de DSN.

$dsn = 'mysql:host=ADRESSE_DU_SERVEUR;dbname=VOTRE_BASE_DE_DONNEES;port=VOTRE_PORT;charset=VOTRE_ENCODAGE';

La connexion au serveur MySQL

Maintenant, nous allons pouvoir créer la connexion au serveur MySQL. A la suite de cette dernière, nous allons effectuer une requête et afficher le résultat.

Dans un premier temps, il faut renseigner les paramètres permettant la connexion. Ceux-ci seront stockés dans une variable. Pour faire simple, on la nommera « pdo ». Voici un exemple :

$pdo = new PDO($dsn, 'VOTRE_NOM_UTILISATEUR_SERVEUR' , 'VOTRE_MOT_DE_PASSE');

Vous pouvez vérifier si des erreurs de relation entre votre script PHP et la base de données existent. Vous pouvez même en être informé par e-mail. Idéal si votre serveur de base de données ne fonctionne plus. Vous serez rapidement informé.

Si vous utilisez le script sur un serveur en ligne, il faut utiliser les blocs « try / catch » comme dans l’exemple ci-dessous.

try {
 
$pdo = new PDO($dsn, 'VOTRE_NOM_UTILISATEUR_SERVEUR' , 'VOTRE_MOT_DE_PASSE');

}
catch (PDOException $exception) {
 
 mail('VOTRE_EMAIL', 'PDOException', $exception->getMessage());
 exit('Erreur de connexion à la base de données');
 
}

Si aucune erreur n’apparaît, nous sommes normalement connectés. Le meilleur moyen de vérifier est d’en avoir le cœur net en utilisant une requête et en affichant le résultat. Nous allons utiliser une requête pour sélectionner des clients dans notre table.

Pour cela, il faut utiliser une fonction qui se nomme « query » avec PDO. Le résultat sera stocké dans une variable. Nous verrons comment la réutiliser pour afficher ce dernier dans notre page.  Voici le code à utiliser.

$query = $pdo->query("VOTRE_REQUETE_MYSQL");

$resultat = $query->fetchAll();

Afficher les résultats de la requête

Avec l’ensemble des éléments que nous avons vus précédemment, nous pouvons créer un script complet. Celui-ci va donc se connecter à une base de données MySQL en PHP. Il s’assurera qu’il n’y a pas d’erreur, puis exécuter une requête pour extraire les clients masculins. On affichera plusieurs informations comme le nom et prénom dans un tableau.

Voici le code complet que vous pouvez utiliser. Il y a des commentaires pour permettre une meilleure compréhension.

<html>
<head>
<title> </title>
</head>
<body>

<?php

// Création du DSN

$dsn = 'mysql:host=localhost;dbname=commerce;port=3306;charset=utf8';

// Création et test de la connexion

try {
 
$pdo = new PDO($dsn, 'root' , '');

}
catch (PDOException $exception) {
 
 mail('fauxmail@votremail.com', 'PDOException', $exception->getMessage());
 exit('Erreur de connexion à la base de données');
 
}

// Requête pour tester la connexion

$query = $pdo->query("SELECT * FROM `clients` WHERE `gender` LIKE 'male'");

$resultat = $query->fetchAll();

//Afficher le résultat dans un tableau

print("<table border=\"1\">");

foreach ($resultat as $key => $variable)
{
print("<tr>");
print("<td>".$resultat[$key]['gender']."</td>");
print("<td>".$resultat[$key]['title']."</td>");
print("<td>".$resultat[$key]['givenname']."</td>");
print("<td>".$resultat[$key]['surname']."</td>");
print("<tr>");
}

print("</table>");

?>

</body>
</html>

Et maintenant, voici le résultat obtenu si on utilise le script directement dans un navigateur. Nous avons bien réussi à nous connecter à une base de données MySQL avec PHP.

Résultat de la connexion MySQL
Résultat de la connexion MySQL