Solutions au Mysql_connect obsolète en PHP

Habdul Hazeez 30 janvier 2023
  1. Connectez-vous à MySQL à l’aide de la procédure Mysqli_connect
  2. Connectez-vous à MySQL à l’aide de la programmation orientée objet
  3. Connectez-vous à MySQL à l’aide de PDO
Solutions au Mysql_connect obsolète en PHP

Cet article vous apprendra les solutions au mysql_connect obsolète en PHP. Ces solutions incluent mysqli_connect (procédural et OOP) et PHP Data Objects (PDO).

Connectez-vous à MySQL à l’aide de la procédure Mysqli_connect

mysqli_connect vous permet d’utiliser la programmation procédurale pour vous connecter à votre base de données MySQL. Par conséquent, vous pouvez utiliser l’algorithme suivant :

  • Définissez les détails de connexion à la base de données.
  • Connectez-vous avec mysqli_connect.
  • S’il y a une connexion réussie, affichez un message de réussite.
  • En cas d’échec de la connexion, affichez un message d’erreur.

Cet algorithme fonctionne correctement jusqu’à ce qu’une erreur se produise à l’étape 2. Une telle erreur peut être un détail de base de données incorrect.

Lorsque PHP rencontre ces détails incorrects, il lève une exception Fatal Error. Par conséquent, le code n’atteindra pas l’étape 3 ou l’étape 4, où vous afficherez un message d’erreur.

Pour remédier à cela, nous devons désactiver le rapport d’erreur MySQL et supprimer les avertissements. En faisant cela, lorsqu’une erreur se produit, vous empêcherez l’utilisateur de voir des détails sensibles et, en même temps, vous pourrez afficher un message d’erreur personnalisé.

Cela dit, voici l’algorithme modifié :

  • Définissez les détails de connexion à la base de données.
  • Désactivez le rapport d’erreur MySQL.
  • Connectez-vous avec mysqli_connect et supprimez les avertissements.
  • S’il y a une connexion réussie, affichez un message de réussite.
  • En cas d’échec de la connexion, affichez un message d’erreur.

Voici l’implémentation de cet algorithme :

<?php
    // The following are the defaults for a
    // new MySQL installation. You should replace
    // the $host, $mysql_user, and $mysql_user_password
    // with your details.
    $host = 'localhost';
    $mysql_user = 'root';
    $mysql_user_passowrd = '';

    // Turn off error reports like "Fatal Errors".
    // Such reports can contain too much sensitive
    // information that no one should see. Also,
    // turning off error reports allows us to handle
    // connection error in an if/else statement.
    mysqli_report(MYSQLI_REPORT_OFF);

    // If there is an error in the connection string,
    // PHP will produce a Warning message. For security
    // and private reasons, it's best to suppress the
    // warnings using the '@' sign
    $connect_to_mysql = @mysqli_connect($host, $mysql_user, $mysql_user_passowrd);

    if (!$connect_to_mysql) {
        echo "<b style='color: red;'>Failed to connect to MySQL.</b>";
    } else {
        echo "You've made a successful connection to MySQL.";
    }
?>

Sortie pour une connexion réussie :

You've made a successful connection to MySQL.

Sortie pour une connexion échouée :

<b style='color: red;'>Failed to connect to MySQL.</b>

Connectez-vous à MySQL à l’aide de la programmation orientée objet

Avec OOP et mysqli_connect, vous pouvez créer une connexion à une base de données en utilisant new mysqli(). Comme la technique procédurale, vous devez passer les détails de connexion à new mysqli().

Cependant, vous pouvez avoir des erreurs dans ces détails, nous utiliserons donc un bloc try...catch pour la gestion des erreurs. Tout d’abord, nous placerons les détails de connexion dans le bloc try, et si une erreur se produit, nous les intercepterons dans le bloc catch.

Dans ce qui suit, la connexion à MySQL utilise la version OOP de mysqli_connect. Vous remarquerez également que nous avons supprimé les erreurs dans la chaîne de connexion.

<?php
    // The following are the defaults for a
    // new MySQL installation. You should replace
    // the $host, $mysql_user, and $mysql_user_password
    // with your details.
    $host = 'localhost';
    $mysql_user = 'root';
    $mysql_user_passowrd = '';

    try {
        // Connect to the database using the OOP style
        // of mysqli.
        $connection_string = @new mysqli($host, $mysql_user, $mysql_user_passowrd);
        echo "You've made a successful connection to MySQL.";
    } catch (Exception $e) {
        // If an error occurs, access the getMessage()
        // method of the $e object. This gives information
        // on why the error occurred.
        echo "<b style='color: red;'>Failed to connect to MySQL :</b> " . $e->getMessage();
    }
?>

Sortie pour une connexion réussie :

You've made a successful connection to MySQL.

Sortie pour une connexion échouée :

<b style='color: red;'>Failed to connect to MySQL :</b> Access denied for user ''@'localhost' (using password: NO)

Connectez-vous à MySQL à l’aide de PDO

Vous pouvez vous connecter à MySQL en utilisant PDO, et vous devriez intercepter les erreurs en utilisant un bloc try... catch. Ce dernier fonctionne de la même manière que vous avez appris dans la section POO.

De plus, votre utilisateur ne verra pas les messages d’erreur sensibles lorsqu’une erreur se produit. Maintenant, voici la version PDO pour se connecter à MySQL :

<?php
    // The following are the defaults for a
    // new MySQL installation. You should replace
    // the $host, $mysql_user, and $mysql_user_password
    // with your details.
    $host = 'localhost';
    $mysql_user = 'root';
    $mysql_user_passowrd = '';

    try {
        // Connect to MySQL using PDO and set PDO
        // error mode to exception.
        $connection_string = @new PDO("mysql:host=$host", $mysql_user, $mysql_user_passowrd);
        $connection_string->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "You've made a successful connection to MySQL.";
    } catch (PDOException $e) {
        // If an error occurs, access the getMessage()
        // method of the $e object. This gives information
        // on why the error occurred.
        echo "<b style='color: red;'>Failed to connect to MySQL:</b> " . $e->getMessage();
    }
?>

Sortie pour une connexion réussie :

You've made a successful connection to MySQL.

Sortie pour une connexion échouée :

Failed to connect to MySQL: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn

Article connexe - MySQL Database