W3docs

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
ParteDescrizione
$mysqlUn link di connessione restituito da mysqli_connect() (solo stile procedurale).
Valore restituitoUn 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 da mysqli_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, usare mysqli_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 a 0.

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().

Pratica

Pratica
Qual è la funzione di 'field_count' in PHP?
Qual è la funzione di 'field_count' in PHP?
Was this page helpful?