error_list
Guida alla funzione mysqli_error_list() in PHP per ottenere un array di errori dall'ultima chiamata MySQLi, con sintassi ed esempi pratici.
La funzione mysqli_error_list() restituisce un array degli errori generati dall'ultima chiamata alla funzione MySQLi su una determinata connessione. A differenza di mysqli_error(), che fornisce solo il messaggio dell'ultimo errore come string, mysqli_error_list() restituisce tutti gli errori di quell'operazione — ciascuno come array associativo contenente il numero di errore, il codice SQLSTATE e il messaggio leggibile. Questa pagina illustra la sintassi, la struttura dei dati restituiti e come utilizzarla in pratica.
Sintassi
mysqli_error_list(mysqli $mysql): arrayLo stile orientato agli oggetti utilizza invece la proprietà di sola lettura error_list:
$mysqli->error_list;Parametri
$mysql— Un object di connessione MySQLi restituito damysqli_connect()(omysqli_init()/new mysqli()).
Valore restituito
Un array di array associativi. L'array è vuoto quando non si è verificato alcun errore. Ogni voce ha tre chiavi:
| Chiave | Tipo | Descrizione |
|---|---|---|
errno | int | Il numero di errore MySQL (es. 1146 per "la tabella non esiste"). |
sqlstate | string | Il codice di errore SQLSTATE a cinque caratteri (es. 42S02). |
error | string | Il testo del messaggio di errore. |
Esempio di base
Si chiama mysqli_error_list() subito dopo l'operazione che si vuole esaminare — tipicamente quando una query ha appena fallito:
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
$error_list = mysqli_error_list($mysqli);
foreach ($error_list as $error) {
echo "Failed to execute query. Error message: " . $error['error'] . "\n";
}
exit();
}
mysqli_close($mysqli);
?>Qui ci connettiamo, eseguiamo una query e verifichiamo il risultato. Se mysqli_query() restituisce false, chiamiamo mysqli_error_list() e iteriamo sull'array restituito, stampando il messaggio error di ogni errore prima di uscire. Quando la query ha successo, il ciclo semplicemente non viene eseguito perché l'array è vuoto.
Lettura del codice di errore e del SQLSTATE
Poiché ogni voce è un array associativo, è possibile leggere il codice numerico e il SQLSTATE insieme al messaggio — utile per ramificare in base a specifici errori anziché analizzare il testo del messaggio:
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
$error_list = mysqli_error_list($mysqli);
foreach ($error_list as $error) {
echo "Failed to execute query. Error message: " . $error['error'] . "\n";
echo "Error code: " . $error['errno'] . "\n";
echo "SQLSTATE error code: " . $error['sqlstate'] . "\n";
}
exit();
}
mysqli_close($mysqli);
?>Questo estende l'esempio di base stampando il codice numerico errno e il codice sqlstate per ogni errore, fornendo il contesto diagnostico completo.
Stile orientato agli oggetti
Se si crea la connessione con new mysqli(), usare la proprietà error_list:
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if (!$mysqli->query("SELECT * FROM missing_table")) {
foreach ($mysqli->error_list as $error) {
echo "[{$error['errno']}] {$error['sqlstate']}: {$error['error']}\n";
}
}
$mysqli->close();
?>mysqli_error_list() vs. funzioni correlate
mysqli_error()— restituisce solo il messaggio dell'ultimo errore come string. Usarla quando si ha bisogno di un singolo messaggio.mysqli_errno()— restituisce il numero di errore dell'ultima chiamata.mysqli_error_list()— restituisce tutti gli errori dell'ultima chiamata, ciascuno conerrno,sqlstateederror. Usarla quando una singola operazione può esporre più problemi.
Avvertenze
- La lista riflette solo la chiamata MySQLi più recente su quella connessione. Catturarla immediatamente dopo l'operazione fallita — una successiva chiamata riuscita la azzera.
- Un'operazione riuscita restituisce un array vuoto, non
falseonull, quindi usareif (!$result)(o controllaremysqli_errno()) prima di assumere che ci siano errori da leggere. - Per i fallimenti di connessione, il passo di connessione stesso fallisce prima di avere un object utilizzabile — usare
mysqli_connect_error()in quel caso.
Conclusione
mysqli_error_list() fornisce accesso strutturato a tutti gli errori dell'ultima operazione MySQLi, completo di numero di errore, SQLSTATE e messaggio. Usarla quando si ha bisogno di diagnostiche più ricche di quelle fornite da mysqli_error(). Per la gestione degli errori PHP in generale, vedere gestione degli errori PHP e la panoramica di mysqli.