W3docs

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.

Prática

Prática
Qual é o papel dos verificadores de sintaxe na depuração de PHP?
Qual é o papel dos verificadores de sintaxe na depuração de PHP?
Was this page helpful?