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.