logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri
01/10/2025, by Ivan

Una query Select restituirà sempre un oggetto set di risultati contenente zero o più record. Esistono diversi modi per ottenere i dati da questo set di risultati a seconda del caso d’uso. I record vengono recuperati come oggetti per impostazione predefinita, a meno che tu non modifichi la modalità di recupero (vedi: setFetchMode).

Il caso più comune è iterare sul set di risultati con un ciclo foreach().

// Query statica:
$result = $connection->query("SELECT field1, field2 FROM {mytable}");
foreach ($result as $record) {
  // Fare qualcosa con ciascun $record
}

// Query dinamica:
$result = $query->execute();
foreach ($result as $record) {
  // Fare qualcosa con ciascun $record.
}

Tuttavia, a seconda dell’utilizzo dei risultati, esistono diversi altri modi per ottenere i record.

Per recuperare esplicitamente il record successivo, usa:

$record = $result->fetch();            // Usa la modalità di recupero predefinita.
$record = $result->fetchObject();  // Recupera come oggetto stdClass.
$record = $result->fetchAssoc();   // Recupera come array associativo.

Se non c’è un record successivo, viene restituito FALSE. In genere è meglio evitare fetch() a favore di fetchObject() e fetchAssoc(), poiché questi ultimi sono più autoesplicativi. Se hai bisogno di usare un’altra modalità di recupero supportata da PDO, usa fetch().

Per ottenere un solo campo dal set di risultati, usa:

$record = $result->fetchField($column_index);

Il valore predefinito di $column_index è 0 per il primo campo.

Per contare il numero di righe restituite da un’operazione DELETE, INSERT o UPDATE, usa:

$number_of_rows = $result->rowCount();

Per contare il numero di righe restituite da un’operazione SELECT, usa:

$number_of_rows = $connection->select('mytable')->countQuery()->execute()->fetchField();

Per recuperare tutti i record in un singolo array, usa uno dei seguenti metodi:

// Recupera tutti i record in un array indicizzato di oggetti stdClass.
$result->fetchAll();

// Recupera tutti i record in un array associativo indicizzato dal campo specificato.
$result->fetchAllAssoc($field);

// Recupera un set di risultati a 2 colonne come array associativo campo0 => campo1.
$result->fetchAllKeyed();
// Puoi anche specificare quali due campi usare indicando i numeri delle colonne.
$result->fetchAllKeyed(0,2); // corrisponde a campo0 => campo2
$result->fetchAllKeyed(1,0); // corrisponde a campo1 => campo0
// Se ti serve un array dove chiavi e valori contengono lo stesso campo (ad esempio per creare un elemento di form 'checkboxes'), il seguente è un metodo valido:
$result->fetchAllKeyed(0,0); // corrisponde a campo0 => campo0, es. [article] => [article]

// Recupera un set di risultati a 1 colonna come un unico array.
$result->fetchCol();
// È possibile specificare il numero di colonna, altrimenti predefinito è la prima colonna.
$result->fetchCol($column_index);

Nota che fetchAll() e fetchAllAssoc() per impostazione predefinita useranno la modalità di recupero impostata nella query (array numerico, array associativo o oggetto). Questo può essere modificato passando una nuova costante di modalità di recupero. Per fetchAll() è il primo parametro. Per fetchAllAssoc() è il secondo parametro. Esempi:

// Ottieni un array di array indicizzati sul campo 'id'.
$result->fetchAllAssoc('id', PDO::FETCH_ASSOC);
// Ottieni un array di array con sia chiavi numeriche che associative.
$result->fetchAll(PDO::FETCH_BOTH);

Poiché PHP supporta le chiamate concatenate ai metodi sugli oggetti restituiti, è molto comune saltare del tutto la variabile $result, ad esempio:

// Ottieni un array associativo di id e titoli.
$examples = $connection->query("SELECT id, title FROM {mytable}")->fetchAllKeyed();

// Ottieni un singolo record dal database.
$myobj = $connection->query("SELECT * FROM {mytable} WHERE example = :example", [':example' => $example])->fetchObject();

// Ottieni un singolo valore dal database.
$myval = $connection->query("SELECT example FROM {mytable} WHERE id = :id", [':id' => $id])->fetchField();

Se ti serve un array semplice del tipo [1, 2, 3, 4, 5], dovrai accontentarti di qualcosa di più simile a [1=>1, 2=>2, 3=>3, 4=>4, 5=>5]. Puoi ottenerlo con:

$ids = $connection->query("SELECT id FROM {example}")->fetchAllKeyed(0,0);