formations / php / connexion-php-bases-de-donnees

Débutant
cgoupil1970 | 08-12-2023

Connexion PHP & Bases de données

En PHP, il est possible d'interagir avec des bases de données, notamment MySQL. Pour cela, il existe deux extensions PHP : MySQLi et PDO. Dans ce tutoriel, nous allons voir comment se connecter à une base de données. Il est préférable d'avoir suivi les tutoriels sur phpMyAdmin et SQL afin d'avoir des notions sur les requêtes SQL et bien sûr d'avoir des notions de php.

Connexion MySQLI

MySQLi est une extension PHP qui permet d'interagir avec les bases de données MySQL. Elle a été introduite dans PHP 5.0.0 et est basée sur la bibliothèque C de MySQL.

MySQLi offre un certain nombre d'avantages par rapport à l'ancienne extension MySQL, notamment :

  • Une interface plus orientée objet
  • Une meilleure prise en charge des requêtes préparées
  • Une meilleure sécurité

MySQLi est une des solutions recommandées pour l'interrogation des bases de données MySQL en PHP.

Voici quelques exemples de fonctions MySQLi :

  • mysqli_connect() : pour se connecter à une base de données MySQL
  • mysqli_query() : pour exécuter une requête MySQL
  • mysqli_fetch_assoc() : pour récupérer une ligne de résultat sous forme d'un tableau associatif

Pour plus d'informations sur MySQLi, vous pouvez consulter la documentation officielle de PHP.

Script de connexion MySQLI

Le script qui suit est un script en php procédural qui permet de se connecter à la base de données avec MySqli et également de gérer l'interclassement UTF-8 des transactions.

Pour le tester, on met en place un dossier nommé "animalerie" à la racine du répertoire "www" de Wamp ou encore dans le répertoire de Xampp. Ensuite à la racine, on crée un fichier connexion-mysqli.php et on ajoute dedans le script.

<?php
// Déclaration des variables
$host = "localhost";
$user = "root";
$password = "";
$database = "base_demo";

// Connexion à la base de données
$mysqli = mysqli_connect($host, $user, $password, $database);

// Vérification de la connexion
if ($mysqli === false) {
    die("Erreur de connexion : " . mysqli_connect_error());
}

// Définition du mode d'encodage
mysqli_set_charset($mysqli, "utf8");

return $mysqli;
?>

Dans ce script, on déclare des variables qui correspondent aux arguments attendus par la fonction mysqli_connect.

  • $host : Cette variable permet de déclarer le nom ou l'adresse du serveur auquel on va se connecter pour faire des requêtes sur la base de données.
  • $user : Cette variable permet de déclarer le nom de l'utilisateur, dans notre cas, nous utilisons "root" qui est le nom d'utilisateur des émulateurs en local. Dans le cas d'un hébergement en ligne, le nom d'utilisateur sera fourni par l'hébergeur.
  • $password : Cette variable permet de définir le mot de passe d'accès à la base de données, par défaut à l'exception de sur Mac, il n'y en a pas. Dans le cas d'un hébergement en ligne, ce mot de passe sera fourni par l'hébergeur.
  • $database : Cette variable permet de définir le nom de la base de données.

Dans le script, on déclare la connexion obtenue par la fonction mysqli_connect dans la variable $mysqli. La fonction mysqli_connect renvoi false si la connexion échoue, d'ou l'utilisation dans le script de la condition if qui permet de vérifier si la connexion s'est bien effectuée.

Ensuite la fonction mysqli_set-charset permet de s'assurer que les requêtes qui seront effectuées à l'aide de cette connexion prennent bien en charge les caractères accentués (UTF-8).

Pour tester le script il suffit alors de lancer l'adresse d'accès au script dans la barre d'adresse du navigateur (http://localhost/animalerie/connexion-mysqli.php), soit on obtient une page blanche et la connexion s'est bien passée, soit la condition if renvoi une erreur qui apparait alors dans la page.


Connexion PDO

PDO, ou PHP Data Objects, est une extension PHP qui permet d'interagir avec des bases de données. Elle a été introduite dans PHP 5.1.0 et est basée sur la norme ODBC.

PDO offre un certain nombre d'avantages par rapport aux extensions de base de données traditionnelles, notamment :

  • Une interface abstraite : PDO fournit une interface abstraite pour l'accès aux bases de données, ce qui signifie que le code est indépendant du type de base de données.
  • Une meilleure sécurité : PDO prend en charge les requêtes préparées, qui sont une méthode plus sûre pour exécuter des requêtes SQL.
  • Une meilleure évolutivité : PDO est conçu pour être évolutif, ce qui signifie qu'il peut être utilisé pour accéder à des bases de données de grande taille.

PDO est une extension PHP puissante et flexible qui permet d'interagir avec des bases de données de manière sûre et évolutive.

Script de connexion PDO

Pour tester la connexion à une base de données avec PDO, comme pour la connexion MySQLI on crée un fichier dans le dossier nommé "animalerie", ce fichier est nommé "connexion-pdo.php" dans lequel on met le script suivant.

Il est à noter que PDO s'exécute en php objet que vous pouvez aborder dans les tutos dédiés à la programmation orientée objet avec Php.

<?php

// Définition des paramètres de connexion
$dsn = "mysql:host=localhost;dbname=base_demo;charset=utf8";
$username = "root";
$password = "";

// Connexion à la base de données
try {
  $connexion = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
  die("Erreur de connexion : " . $e->getMessage());
}

// Vérification de la connexion
if ($connexion === false) {
  die("Erreur de connexion");
}

Comme pour la connexion en MySqli, on déclare des variables.

  • $dsn : Une chaîne de caractères qui permet de spécifier le nom du serveur, le nom de la base de données et l'interclassement.
  • $username : Le nom de l'utilisateur, comme pour la connexion MySQLi il s'agit de "root" en local pour une base de données hébergée, ce nom d'utilisateur est fourni par l'hébergeur.
  • $password : Le mot de passe, comme en MySQLi il n'y en a pas, dans le cas d'une base de données hébergée, ce mot de passe est fourni par l'hébergeur.

Dans le script, on utilise un try/catch qui permet de gérer les exceptions. Une exception est un événement qui se produit pendant l'exécution d'un programme et qui peut entraîner une erreur. Le try catch permet de capturer ces exceptions et de les traiter de manière appropriée.

La condition if est utilisé pour vérifier si la connexion a réussi. Si la connexion a échoué, la variable $connexion est false et le bloc if est exécuté. On peut utiliser le try/catch seul mais il est recommandé de le doubler avec le if.

Il est à noter que PDO étant en POO (Programmation Orientée Objet) on peut voir des instanciations d'objet à l'aide de "new".

Comme pour l'exemple précédent, on peut tester le script avec l'adresse "http://localhost/animalerie/connexion-pdo.php" et comme pour la connexion précédente, on a soit une page blanche soit une exception renvoyée par le try/catch ou une erreur renvoyée par la condition if.


Conclusion

Il est globalement assez simple de se connecter à une base de données, que ce soit avec MySQLi ou PDO. Il est à noter que MySQLi peut également être utilisé en POO.

Si votre projet est développé en Php Objet, il sera préférable d'utiliser PDO et des requêtes préparées, si par contre, vous faîtes vos premiers pas et que votre code Php est procédural utilisez MySQLi.

Tutos du jour

Opérateurs & conditions

Opérateurs & conditions

Les opérateurs sont des symboles spéciaux utilisés pour effectuer des opérations sur des données

Voir le tuto
PhpMyAdmin - Les bases de données

PhpMyAdmin - Les bases de données

phpMyAdmin est un outil d'administration de base de données pour MySQL et MariaDB.

Voir le tuto
Votre inscription à la newsletter a bien été prise en compte. Une erreur est survenue lors de l'inscription à la newsletter. Votre désinscription à la newsletter a bien été prise en compte. Une erreur est survenue lors de la désinscription à la newsletter.

Inscription à la newsletter

Désinscription de la newsletter