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 )

Libri