Professional CodeIgniter, Thomas Myer
Chapter 3: A 10,000 - Foot View of CodeIgniter
56
To loop over the result set of that query, you can use either the
result()
or
result_array()
methods,
depending on whether you like to process your results as an object or as an array.
$sql = "select a.name, a.id, b.groupname
from persons a, groups b
where a.group_id = b.id
group by b.groupname, a.name";
$Q = $this-
>
db-
>
query($sql);
foreach ($Q-
>
result() as $row){
echo $row-
>
name;
echo $row-
>
id;
echo $row-
>
groupname;
}
//here's the alternative approach, with result_array
foreach ($Q-
>
result_array() as $row){
echo $row[`name'];
echo $row[`id'];
echo $row[`groupname'];
}
There ' s really no discernible difference from a performance standpoint, but some developers prefer one
over the other. It ' s your choice, really.
If you need a count of rows in a result set, use the
num_rows()
method:
$sql = "select a.name, a.id, b.groupname
from persons a, groups b
where a.group_id = b.id
group by b.groupname, a.name";
$Q = $this-
>
db-
>
query($sql);
if ($Q-
>
num_rows()){
foreach ($Q-
>
result() as $row){
echo $row-
>
name;
echo $row-
>
id;
echo $row-
>
groupname;
}
}
Sometimes you may have a query that generates just one result row. In that case, use
row()
or
row_array()
(again, depending on your preference) to process that result set.
$sql = "select a.name, a.id, b.groupname
from persons a, groups b
where a.group_id = b.id
limit 1";
c03.indd 56
c03.indd 56
6/10/08 5:33:49 PM
6/10/08 5:33:49 PM