W3docs

debug

Aprende sobre la función mysqli_debug() en PHP para habilitar la depuración de conexiones MySQLi a nivel de biblioteca cliente MySQL.

En este artículo nos centraremos en la función mysqli_debug() de PHP, que se utiliza para habilitar la salida de depuración de bajo nivel para conexiones MySQLi pasando una string de depuración a la biblioteca cliente de MySQL. Ofreceremos una descripción general de la función, cómo funciona y ejemplos de su uso.

Introducción a la función mysqli_debug()

La función mysqli_debug() es una función integrada de PHP que habilita la salida de depuración para conexiones MySQLi. Funciona pasando una string de depuración específica a la biblioteca cliente de MySQL subyacente. Esta función es especialmente útil para la depuración de bajo nivel del protocolo cliente de MySQL, aunque requiere que la biblioteca cliente de MySQL esté compilada con soporte de depuración habilitado.

Cómo usar la función mysqli_debug()

Usar la función mysqli_debug() es sencillo. Se llama a la función con un único argumento de tipo string que contiene las directivas de depuración. A continuación, se muestra un ejemplo:

¿Cómo usar la función mysqli_debug()?

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

// Enable debugging output for the MySQL client protocol
mysqli_debug("d, %t, %i, %n, %q, %o, %c, %s\n");

// execute queries using the connection
$result = $mysqli->query("SELECT 1");

mysqli_close($mysqli);
?>

En este ejemplo, llamamos a la función mysqli_connect() para conectarnos a una base de datos MySQL con un nombre de usuario y contraseña. Luego llamamos a la función mysqli_debug() con una string de depuración que indica a la biblioteca cliente de MySQL que muestre información de temporización, IDs de sentencias, consultas y otros detalles del protocolo. Cuando se ejecutan las consultas, la información de depuración se imprime en la salida. Tenga en cuenta que esta función no acepta un boolean ni un object de conexión, y requiere que la biblioteca cliente de MySQL esté compilada con soporte de depuración.

Uso avanzado

La función mysqli_debug() también puede utilizarse en escenarios más avanzados. Sin embargo, opera a nivel de la biblioteca cliente de MySQL, lo que significa que se aplica de forma global a todas las conexiones MySQLi del proceso actual, y no a un object de conexión específico. A continuación, se muestra un ejemplo:

Uso avanzado de PHP mysqli_debug()

<?php
$mysqli1 = mysqli_connect("localhost", "username", "password", "database1");
$mysqli2 = mysqli_connect("localhost", "username", "password", "database2");

// Enable debugging for the MySQL client protocol
mysqli_debug("d, %q\n");

// execute queries using the first connection
$mysqli1->query("SELECT 1");

// Note: mysqli_debug() is global and affects all subsequent MySQLi connections
// in the same process. To debug the second connection, you would typically
// restart the script or use a separate process.

mysqli_close($mysqli1);
mysqli_close($mysqli2);
?>

En este ejemplo, creamos dos objetos MySQLi y nos conectamos a dos bases de datos MySQL diferentes. Luego llamamos a la función mysqli_debug() con una string de depuración para habilitar la depuración a nivel de protocolo. Dado que mysqli_debug() no acepta un object de conexión como parámetro, se aplica de forma global a todas las conexiones MySQLi del script actual. Cuando se ejecutan las consultas, se muestra la información de depuración especificada.

Conclusión

En conclusión, la función mysqli_debug() proporciona capacidades de depuración de bajo nivel para conexiones MySQLi al interactuar con el protocolo de depuración de la biblioteca cliente de MySQL. Aunque requiere indicadores de compilación específicos, opera de forma global en lugar de por conexión, y no activa el registro estándar de consultas SQL, comprender su firma basada en string y sus limitaciones ayuda a los desarrolladores a solucionar problemas en las interacciones del cliente MySQL. Para aplicaciones PHP modernas, considere usar mysqli_report() o PDO::ATTR_ERRMODE para los flujos de trabajo estándar de manejo de errores y depuración.

Práctica

Práctica
¿Cuál es el papel de los verificadores de sintaxis en la depuración de PHP?
¿Cuál es el papel de los verificadores de sintaxis en la depuración de PHP?
Was this page helpful?