debug
Saiba como usar mysqli_debug() em PHP para depuração de conexões MySQLi com a biblioteca cliente MySQL.
Neste artigo, vamos abordar a função mysqli_debug() em PHP, que é utilizada para ativar a saída de depuração de baixo nível para conexões MySQLi, passando uma string de depuração para a biblioteca cliente MySQL. Apresentaremos uma visão geral da função, como ela funciona e exemplos de uso.
Introdução à função mysqli_debug()
A função mysqli_debug() é uma função embutida do PHP que ativa a saída de depuração para conexões MySQLi. Ela funciona passando uma string de depuração específica para a biblioteca cliente MySQL subjacente. Essa função é principalmente útil para depuração de baixo nível do protocolo cliente MySQL, embora exija que a biblioteca cliente MySQL seja compilada com suporte a depuração ativado.
Como usar a função mysqli_debug()
Usar a função mysqli_debug() é simples. Você chama a função com um único argumento string contendo as diretivas de depuração. Veja um exemplo:
Como usar a função 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);
?>Neste exemplo, chamamos a função mysqli_connect() para conectar a um banco de dados MySQL com nome de usuário e senha. Em seguida, chamamos a função mysqli_debug() com uma string de depuração que instrui a biblioteca cliente MySQL a exibir informações de temporização, IDs de instrução, consultas e outros detalhes do protocolo. Quando as consultas são executadas, as informações de depuração são impressas na saída. Observe que esta função não aceita um boolean ou um object de conexão, e requer que a biblioteca cliente MySQL seja compilada com suporte a depuração.
Uso avançado
A função mysqli_debug() também pode ser usada em cenários mais avançados. No entanto, ela opera no nível da biblioteca cliente MySQL, o que significa que se aplica globalmente a todas as conexões MySQLi no processo atual, e não a um object de conexão específico. Veja um exemplo:
Uso avançado 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);
?>Neste exemplo, criamos dois objetos MySQLi e conectamos a dois bancos de dados MySQL diferentes. Em seguida, chamamos a função mysqli_debug() com uma string de depuração para ativar a depuração no nível de protocolo. Como mysqli_debug() não aceita um object de conexão como parâmetro, ela se aplica globalmente a todas as conexões MySQLi no script atual. Quando as consultas são executadas, as informações de depuração especificadas são exibidas.
Conclusão
Em conclusão, a função mysqli_debug() fornece capacidades de depuração de baixo nível para conexões MySQLi por meio da interface com o protocolo de depuração da biblioteca cliente MySQL. Embora exija flags de compilação específicas, opere de forma global em vez de por conexão e não ative o registro padrão de consultas SQL, compreender sua assinatura baseada em string e suas limitações ajuda os desenvolvedores a solucionar problemas nas interações do cliente MySQL. Para aplicações PHP modernas, considere usar mysqli_report() ou PDO::ATTR_ERRMODE para fluxos de trabalho padrão de tratamento de erros e depuração.