W3docs

debug

Scopri la funzione mysqli_debug() in PHP per abilitare l'output di debug per le connessioni MySQLi con esempi pratici.

In questo articolo ci concentreremo sulla funzione mysqli_debug() in PHP, utilizzata per abilitare l'output di debug a basso livello per le connessioni MySQLi passando una stringa di debug alla libreria client MySQL. Forniremo una panoramica della funzione, del suo funzionamento e alcuni esempi di utilizzo.

Introduzione alla funzione mysqli_debug()

La funzione mysqli_debug() è una funzione PHP integrata che abilita l'output di debug per le connessioni MySQLi. Funziona passando una stringa di debug specifica alla libreria client MySQL sottostante. Questa funzione è principalmente utile per il debug a basso livello del protocollo client MySQL, anche se richiede che la libreria client MySQL sia compilata con il supporto al debug abilitato.

Come utilizzare la funzione mysqli_debug()

L'utilizzo della funzione mysqli_debug() è semplice. Si chiama la funzione con un singolo argomento string contenente le direttive di debug. Ecco un esempio:

Come utilizzare la funzione 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);
?>

In questo esempio, chiamiamo la funzione mysqli_connect() per connetterci a un database MySQL con nome utente e password. Dopodiché chiamiamo la funzione mysqli_debug() con una stringa di debug che istruisce la libreria client MySQL a produrre in output i tempi, gli ID delle istruzioni, le query e altri dettagli del protocollo. Quando le query vengono eseguite, le informazioni di debug vengono stampate nell'output. Si noti che questa funzione non accetta un boolean o un object di connessione e richiede che la libreria client MySQL sia compilata con il supporto al debug.

Utilizzo avanzato

La funzione mysqli_debug() può essere utilizzata anche in scenari più avanzati. Tuttavia, opera a livello della libreria client MySQL, il che significa che si applica globalmente a tutte le connessioni MySQLi nel processo corrente, anziché a un object di connessione specifico. Ecco un esempio:

Utilizzo avanzato di 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);
?>

In questo esempio, creiamo due object MySQLi e ci connettiamo a due diversi database MySQL. Chiamiamo poi la funzione mysqli_debug() con una stringa di debug per abilitare il debug a livello di protocollo. Poiché mysqli_debug() non accetta un object di connessione come parametro, si applica globalmente a tutte le connessioni MySQLi nello script corrente. Quando le query vengono eseguite, le informazioni di debug specificate vengono prodotte in output.

Conclusione

In conclusione, la funzione mysqli_debug() fornisce capacità di debug a basso livello per le connessioni MySQLi interfacciandosi con il protocollo di debug della libreria client MySQL. Pur richiedendo flag di compilazione specifici, operando globalmente anziché per singola connessione e non abilitando il logging SQL standard delle query, comprenderne la firma basata su string e le limitazioni aiuta gli sviluppatori a risolvere i problemi di interazione con il client MySQL. Per le applicazioni PHP moderne, si consiglia di utilizzare mysqli_report() o PDO::ATTR_ERRMODE per la gestione standard degli errori e i flussi di lavoro di debug.

Esercitazione

Pratica
Qual è il ruolo dei controlli di sintassi nel debug PHP?
Qual è il ruolo dei controlli di sintassi nel debug PHP?
Was this page helpful?