Login
Libri
Home

Mostrare i Risultati di una Query

Share

Ci sono diversi modi per mostrare i risultati di una Query:

result()

Questa funzione restituisce un array di oggetti, o un array vuoto in caso di errore. Solitamente si potrà utilizzare l'array in un foreach loop come il seguente:


$query = $this->db->query("YOUR QUERY");

foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}

La funzione precedente altro non è che un alias di result_object().

Se si esegue un query che potrebbe non avere risultati, si è incoraggiati a verificare la presenza o meno dei risultati stessi:


$query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
} 

E' possibile passare, alla funzione result(), una stringa che rappresenterà una classe da istanziare per ogni oggetto del risultato (nota: questa classe deve essere caricata)


$query = $this->db->query("SELECT * FROM users;");

foreach ($query->result('User') as $user)
{
echo $row->name; // call attributes
echo $row->reverse_name(); // or methods defined on the 'User' class
}

result_array()

Questa funzione restituisce il riusltato in un array puro, o un array vuoto quando non è prodotto alcun risultato. Tipicamente viene utilizzata con il ciclo foreach, come mostrato di seguito:


$query = $this->db->query("YOUR QUERY");

foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}

row()

Questa funzione restituisce una singola riga. Se la query eseguita ha più righe, questa restituirà solo la prima. Il risultato è restituito come oggeto. Qui la modalità d'uso:


$query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0)
{
$row = $query->row();

echo $row->title;
echo $row->name;
echo $row->body;
} 

Se si desidera specificare la riga restituita, questo è possibile farlo inserendo il numero come primo parametro:


$row = $query->row(5);

In agiunta, come secondo parametro è possibile passare il nome della classe che si intende istanziare per il singolo risultato:


$query = $this->db->query("SELECT * FROM users LIMIT 1;");

$query->row(0, 'User')
echo $row->name; // call attributes
echo $row->reverse_name(); // or methods defined on the 'User' class

row_array()

Questa funzione è identica alla precedente ad eccezion fatta per la tipologia del risultato che restituisce, non un oggetto bensì un array. Esempio:


$query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0)
{
$row = $query->row_array();

echo $row['title'];
echo $row['name'];
echo $row['body'];
} 

Se si vuole una specifica riga si può impostare il numero come primo parametro della funzione:


$row = $query->row_array(5);

 

In aggiunta, è possibie scorrere avanti/in dietro/primo/ultimo i risultati ottenuti usando le seguenti varianti:

<strong>$row = $query->first_row()</strong>
 <strong>$row = $query->last_row()</strong>
 <strong>$row = $query->next_row()</strong>
 <strong>$row = $query->previous_row()</strong>

Di default queste funzioni restituiscono un oggetto a meno che on venga passata come parametro la stringa "array":

<strong>$row = $query->first_row('array')</strong>
 <strong>$row = $query->last_row('array')</strong>
 <strong>$row = $query->next_row('array')</strong>
 <strong>$row = $query->previous_row('array')</strong>

Result Helper Functions

$query->num_rows()

Numero di righe restituite dalla query. Nota: In questo esempio, $query è la variabile alla quale è assegnata il risultato della query:


$query = $this->db->query('SELECT * FROM my_table');

echo $query->num_rows(); 

$query->num_fields()

Numero dei CAMPI (colonne) restituite dalla query. Accertarsi di richiamare la funzione usando l'oggetto del risultato della query:


$query = $this->db->query('SELECT * FROM my_table');

echo $query->num_fields(); 

$query->free_result()

Questa funzione libera lo spazio di memoria. Normalmente tale operazione è fatta da PHP in modo automatico alla fine dell'esecuzione di ogni script. Comunque, se si eseguono un numero considerevole di queries in uno script, si potrebbe voler liberare la memoria prima della generazione dei risultati della query successiva. Esempio:


$query = $this->db->query('SELECT title FROM my_table');

foreach ($query->result() as $row)
{
echo $row->title;
}
$query->free_result(); // The $query result object will no longer be available

$query2 = $this->db->query('SELECT name FROM some_table');

$row = $query2->row();
echo $row->name;
$query2->free_result(); // The $query2 result object will no longer be available 

Ultimo aggiornamento ( Domenica 27 Marzo 2011 06:43 )

Twitter
13 Apr 2011 Funzioni Helper per Query http://t.co/085eCA4 via @AddThis
27 Mar 2011 Mostrare i Risultati di una Query http://t.co/R7NwbK4 via @AddThis
18 Mar 2011 Connettere il proprio Database http://t.co/Ah15SOl via @AddThis
2 Mar 2011 Connettere il proprio Database http://t.co/62wzbn7 via @AddThis
19 Feb 2011 Classe DataBase http://t.co/zoJE4T9 via @AddThis
3 Feb 2011 Rilasciata la versione 2.0.0 http://t.co/vo2O531 via @AddThis
13 Jan 2011 Traduzione Manuale CodeIgniter: Classe Config http://t.co/1dfOxmp via @AddThis
1 Jan 2011 Traduzione: Classe Carrello Della Spesa http://t.co/4jCVLY2 via @AddThis
17 Dec 2010 Traduzione Documentazione: Classe Calendar http://t.co/VN44J9j via @AddThis
7 Dec 2010 Rilasciata la versione 1.7.3 di CodeIgniter http://t.co/KCcTkGc via @AddThis
5 Dec 2010 Codeigniter si fa in due http://t.co/yNZSypY via @AddThis
4 Dec 2010 Traduzione:Le Classi/La Classe Benchmarking (www.codeigniteritalia.it/le-classi/45-la...enchmarking)
29 Nov 2010 Traduzione:Argomenti Generali/Scrivre la Documentazione(www.codeigniteritalia.it/argomenti-gener...umentazione)
29 Nov 2010 Traduzione: Argomenti Generali/Stile e Sintassi (www.codeigniteritalia.it/argomenti-gener...-e-sintassi)
18 Nov 2010 Traduzione:Argomenti Generali/Sicurezza(www.codeigniteritalia.it/argomenti-gener...2-sicurezza)
12 Nov 2010 Traduzione:Argomenti Generali/Sintassi[...](www.codeigniteritalia.it/argomenti-gener...er-le-viste)
11 Nov 2010 Traduzione:Argomenti Generali/Gestire le proprie[...](www.codeigniteritalia.it/argomenti-gener...pplicazioni)
7 Nov 2010 Traduzione:Argomenti Generali/Profilare le[...] (www.codeigniteritalia.it/argomenti-gener...pplicazioni)
Libri