W3docs

fetch_array

Scopri la funzione mysqli_fetch_array() in PHP per recuperare righe da un result set MySQLi come array associativo, numerico o combinato.

In questo articolo ci concentreremo sulla funzione mysqli_fetch_array() in PHP, utilizzata per recuperare una riga da un result set MySQLi come array associativo, numerico o combinato. Forniremo una panoramica della funzione, dei suoi parametri ed esempi pratici.

Introduzione alla funzione mysqli_fetch_array()

La funzione mysqli_fetch_array() è una funzione PHP integrata che recupera una riga da un result set MySQLi. Restituisce la riga come array associativo, array numerico o entrambi, a seconda del parametro result_type. Questo è particolarmente utile quando è necessario iterare sui risultati di una query e accedere alle colonne per nome o per indice.

Funziona sul result set restituito da mysqli_query(). Ogni chiamata avanza un puntatore interno alla riga successiva e restituisce quella riga; quando non ci sono più righe, restituisce null (il valore che termina il ciclo). È la più flessibile tra le funzioni di recupero MySQLi: mysqli_fetch_assoc() restituisce sempre chiavi per nome, mysqli_fetch_row() restituisce sempre chiavi per indice, mentre mysqli_fetch_array() consente di scegliere l'una, l'altra o entrambe.

Come utilizzare la funzione mysqli_fetch_array()

L'utilizzo di mysqli_fetch_array() richiede un result set MySQLi valido. Viene tipicamente usata all'interno di un ciclo while per iterare su tutte le righe. Ecco un esempio completo con gestione base degli errori:

Utilizzo di base con un ciclo while

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
    die("Query failed: " . mysqli_error($mysqli));
}

// Fetch rows as an associative array
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo $row['column1'] . " - " . $row['column2'] . "<br>";
}

mysqli_close($mysqli);
?>

In questo esempio, stabiliamo una connessione ed eseguiamo una query. Verifichiamo gli errori di connessione e di query per evitare fallimenti silenziosi. Il ciclo while chiama mysqli_fetch_array() ripetutamente, restituendo false quando non esistono più righe. La costante MYSQLI_ASSOC garantisce che le colonne siano accessibili per nome.

Modalità di recupero e utilizzo avanzato

Il secondo parametro di mysqli_fetch_array() controlla come viene restituita la riga. Esistono tre costanti utilizzabili:

  • MYSQLI_ASSOC – Restituisce un array associativo (nomi delle colonne come chiavi).
  • MYSQLI_NUM – Restituisce un array numerico (indici delle colonne come chiavi).
  • MYSQLI_BOTH – Restituisce sia array associativo che numerico. Questa è la modalità predefinita se il secondo parametro viene omesso.

Ecco come recuperare una riga come array numerico:

Recupero con array numerico

<?php
// ... connection and query setup ...
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
    echo $row[0] . " - " . $row[1] . "<br>";
}
?>

Quando si usa MYSQLI_BOTH, ogni colonna appare due volte nell'array: una volta per nome e una volta per indice. Questo può essere utile per codice legacy, ma aumenta l'utilizzo della memoria, quindi MYSQLI_ASSOC o MYSQLI_NUM è generalmente preferito per le applicazioni moderne. Se si ha bisogno di una sola forma, è preferibile usare i dedicati mysqli_fetch_assoc() o mysqli_fetch_row(), che evitano di costruire le chiavi aggiuntive.

Stile orientato agli oggetti

mysqli_fetch_array() ha anche una forma orientata agli oggetti. Se il result set è stato ottenuto da $mysqli->query(), chiamare il metodo sull'object result invece di passare il result set alla funzione procedurale:

Equivalente OOP

<?php
$result = $mysqli->query("SELECT * FROM my_table");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    echo $row['column1'] . " - " . $row['column2'] . "<br>";
}
?>

Entrambi gli stili richiamano lo stesso comportamento sottostante; scegliere quello che si adatta al resto del codice. Per mappare ogni riga in un object con proprietà denominate invece di un array, usare mysqli_fetch_object(), e per recuperare tutte le righe in un array bidimensionale, vedere mysqli_fetch_all().

Conclusione

La funzione mysqli_fetch_array() fornisce un recupero flessibile delle righe dai result set MySQLi. Comprendendo le sue modalità di recupero e incorporando una gestione base degli errori, è possibile scrivere query di database più robuste ed efficienti in PHP.

Pratica

Pratica
Cosa fa la funzione mysqli_fetch_array() in PHP?
Cosa fa la funzione mysqli_fetch_array() in PHP?
Was this page helpful?