W3docs

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): array

Lo stile orientato agli oggetti utilizza invece la proprietà di sola lettura error_list:

$mysqli->error_list;

Parametri

  • $mysql — Un object di connessione MySQLi restituito da mysqli_connect() (o mysqli_init() / new mysqli()).

Valore restituito

Un array di array associativi. L'array è vuoto quando non si è verificato alcun errore. Ogni voce ha tre chiavi:

ChiaveTipoDescrizione
errnointIl numero di errore MySQL (es. 1146 per "la tabella non esiste").
sqlstatestringIl codice di errore SQLSTATE a cinque caratteri (es. 42S02).
errorstringIl 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 con errno, sqlstate ed error. 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 false o null, quindi usare if (!$result) (o controllare mysqli_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.

Esercizio

Pratica
Quale dei seguenti rappresenta tipi di errore in PHP?
Quale dei seguenti rappresenta tipi di errore in PHP?
Was this page helpful?