field_count
In questo articolo esploriamo mysqli_field_count() in PHP, usata per restituire il numero di colonne dell'ultima query eseguita sulla connessione.
La funzione mysqli_field_count() restituisce il numero di colonne prodotte dalla query più recente eseguita su una connessione MySQLi. È un modo rapido per ispezionare la struttura di un result set senza dover conservare l'oggetto risultato — un controllo comodo dopo aver eseguito una SELECT, o dopo una query di cui si vuole verificare il numero di colonne prima di recuperare le righe.
Questo articolo tratta la sintassi della funzione, i suoi parametri e il valore restituito, le differenze con la strettamente correlata mysqli_num_fields(), e degli esempi eseguibili (sia in stile procedurale che orientato agli oggetti).
Sintassi
// Procedural style
mysqli_field_count(mysqli $mysql): int
// Object-oriented style
$mysqli->field_count: int // property, read as $mysqli->field_count| Parte | Descrizione |
|---|---|
$mysql | Un link di connessione restituito da mysqli_connect() (solo stile procedurale). |
| Valore restituito | Un int — il numero di colonne dell'ultima query su quella connessione. Restituisce 0 quando l'ultima istruzione non ha prodotto un result set (ad esempio INSERT, UPDATE o DELETE). |
Si noti che la forma orientata agli oggetti è una proprietà di sola lettura ($mysqli->field_count), non una chiamata a metodo.
Come usare mysqli_field_count()
Si chiama la funzione su una connessione attiva subito dopo aver eseguito una query. Non è necessario catturare l'oggetto risultato — mysqli_field_count() legge il numero di colonne direttamente dallo stato dell'ultima query della connessione.
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (mysqli_connect_errno()) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT id, name, email FROM users";
mysqli_query($mysqli, $query);
$num_fields = mysqli_field_count($mysqli);
printf("Number of columns: %d\n", $num_fields); // Number of columns: 3
mysqli_close($mysqli);
?>Qui ci si connette con mysqli_connect() e si verifica mysqli_connect_errno() per uscire in modo pulito in caso di errore. Si esegue una SELECT che restituisce tre colonne, quindi si legge il numero di colonne dalla connessione. L'output è Number of columns: 3.
mysqli_field_count() vs mysqli_num_fields()
Queste due funzioni rispondono alla stessa domanda — "quante colonne?" — ma le leggono da posti diversi:
mysqli_field_count($mysqli)riceve la connessione e riporta le colonne della query più recente. Si usa quando non si ha (o non si vuole) l'oggetto risultato.mysqli_num_fields($result)riceve un oggetto risultato restituito damysqli_query(). Si usa quando si ha già il risultato e lo si sta per iterare.
<?php
$mysqli = mysqli_connect("localhost", "user", "pass", "shop");
$result = mysqli_query($mysqli, "SELECT id, title, price FROM products");
// From the result object:
echo mysqli_num_fields($result), "\n"; // 3
// From the connection (same last query):
echo mysqli_field_count($mysqli), "\n"; // 3
mysqli_free_result($result);
mysqli_close($mysqli);
?>Caso d'uso comune: validare il numero di colonne
Un utilizzo tipico è proteggere il codice che si aspetta una forma specifica del risultato — ad esempio, confermare che una query abbia restituito le colonne di cui si ha bisogno prima di iniziare a leggerle:
<?php
$mysqli = mysqli_connect("localhost", "user", "pass", "shop");
mysqli_query($mysqli, "SELECT id, name FROM categories");
if (mysqli_field_count($mysqli) === 2) {
echo "Result has the expected 2 columns.\n";
} else {
echo "Unexpected column count.\n";
}
mysqli_close($mysqli);
?>Cose da tenere a mente
- Riporta le colonne, non le righe. Per il numero di righe modificate da un'operazione di scrittura, usare
mysqli_affected_rows(); per una chiave auto-increment dopo un inserimento, usaremysqli_insert_id(). - Riflette solo l'ultima query sulla connessione. Se si esegue un'altra query nel mezzo, il conteggio si aggiorna.
- Un'istruzione senza result set (
INSERT/UPDATE/DELETE) lascia il conteggio a0.
Conclusione
mysqli_field_count() è un modo leggero per leggere il numero di colonne dall'ultima query su una connessione MySQLi — senza dover conservare l'oggetto risultato. Si ricorre a essa per validare la struttura di un risultato, preferendo mysqli_num_fields() quando si ha già l'oggetto risultato. Per esplorare le funzioni correlate alla gestione dei risultati, consultare mysqli_query() e mysqli_fetch_field().