Soluciones para Mysql_connect en desuso en PHP

Habdul Hazeez 30 enero 2023
  1. Conéctese a MySQL utilizando el procedimiento Mysqli_connect
  2. Conéctese a MySQL usando programación orientada a objetos
  3. Conéctese a MySQL usando PDO
Soluciones para Mysql_connect en desuso en PHP

Este artículo le enseñará las soluciones al obsoleto mysql_connect en PHP. Estas soluciones incluyen mysqli_connect (procedimiento y OOP) y PHP Data Objects (PDO).

Conéctese a MySQL utilizando el procedimiento Mysqli_connect

mysqli_connect le permite usar la programación procedimental para conectarse a su base de datos MySQL. Como resultado, puede utilizar el siguiente algoritmo:

  • Defina los detalles de conexión de la base de datos.
  • Conéctese con mysqli_connect.
  • Si hay una conexión exitosa, muestra un mensaje de éxito.
  • Si hay una conexión fallida, muestra un mensaje de error.

Este algoritmo funciona bien hasta que ocurre un error en el paso 2. Tal error podría ser un detalle incorrecto de la base de datos.

Cuando PHP encuentra estos detalles incorrectos, arrojará una excepción de Error fatal. Por lo tanto, el código no llegará al paso 3 ni al paso 4, donde mostrará un mensaje de error.

Para remediar esto, tenemos que desactivar el informe de errores de MySQL y suprimir las advertencias. Al hacer esto, cuando ocurra un error, evitará que el usuario vea detalles confidenciales y, al mismo tiempo, podrá mostrar un mensaje de error personalizado.

Dicho esto, el siguiente es el algoritmo modificado:

  • Defina los detalles de conexión de la base de datos.
  • Desactive el informe de errores de MySQL.
  • Conéctese con mysqli_connect y suprima las advertencias.
  • Si hay una conexión exitosa, muestra un mensaje de éxito.
  • Si hay una conexión fallida, muestra un mensaje de error.

La siguiente es la implementación de este algoritmo:

<?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.";
    }
?>

Salida para una conexión exitosa:

You've made a successful connection to MySQL.

Salida para una conexión fallida:

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

Conéctese a MySQL usando programación orientada a objetos

Con OOP y mysqli_connect, puede crear una conexión de base de datos usando new mysqli(). Al igual que la técnica de procedimiento, debe pasar los detalles de la conexión a new mysqli().

Sin embargo, puede tener errores en estos detalles, por lo que usaremos un bloque try...catch para el manejo de errores. Primero, colocaremos los detalles de la conexión en el bloque try, y si ocurre un error, los capturaremos en el bloque catch.

A continuación, la conexión a MySQL utiliza la versión OOP de mysqli_connect. También notará que hemos suprimido los errores en la cadena de conexión.

<?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();
    }
?>

Salida para una conexión exitosa:

You've made a successful connection to MySQL.

Salida para una conexión fallida:

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

Conéctese a MySQL usando PDO

Puedes conectarte a MySQL usando PDO, y deberías detectar errores usando un bloque try... catch. Este último funciona de la misma manera que aprendiste en la sección OOP.

Además, su usuario no verá mensajes de error confidenciales cuando ocurra un error. Ahora, la siguiente es la versión de PDO para conectarse a 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();
    }
?>

Salida para una conexión exitosa:

You've made a successful connection to MySQL.

Salida para una conexión fallida:

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

Artículo relacionado - MySQL Connection

Artículo relacionado - MySQL Database