<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>

<title>Code Igniter User Guide</title>

<style type='text/css' media='all'>@import url('../../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../../userguide.css' />

<script type="text/javascript" src="../../scripts/nav.js"></script>
<script type="text/javascript" src="../../scripts/prototype.lite.js"></script>
<script type="text/javascript" src="../../scripts/moo.fx.js"></script>
<script type="text/javascript">
window.onload = function() {
	myHeight = new fx.Height('nav', {duration: 400}); 
	myHeight.hide();
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='Rick Ellis' />
<meta name='description' content='Code Igniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../../images/nav_toggle.jpg" width="153" height="44" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>Code Igniter User Guide Version 1.4.1</h1></td>
<td id="breadcrumb_right"><a href="../../toc.html">Full Table of Contents</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://www.codeigniter.com/">Code Igniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
<a href="index.html">Database Library</a> &nbsp;&#8250;&nbsp;
Query Results
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="www.codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->


<br clear="all" />


<!-- START CONTENT -->
<div id="content">



<h1>Generating Query Results</h1>


<p>There are several ways to generate query results:</p>

	<h2>result()</h2>
	
	<p>This function returns the query result as an array of <strong>objects</strong>, or <strong>FALSE</strong> on failure.
	
	Typically you'll use this in a foreach loop, like this:</p>
	
	<code>
	$query = $this->db->query("YOUR QUERY");<br />
	<br />
	foreach ($query->result() as $row)<br />
	{<br />
	&nbsp;&nbsp;&nbsp;echo $row->title;<br />
	&nbsp;&nbsp;&nbsp;echo $row->name;<br />
	&nbsp;&nbsp;&nbsp;echo $row->body;<br />
	}</code>

	<p>If you run queries that might <strong>not</strong> produce a result, you are encouraged to test the result first:</p>
	
	<code>
	$query = $this->db->query("YOUR QUERY");<br />
	<br />
	if ($query->num_rows() > 0)<br />
	{<br />
	&nbsp;&nbsp;&nbsp;foreach ($query->result() as $row)<br />
	&nbsp;&nbsp;&nbsp;{<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->title;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->name;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->body;<br />
	&nbsp;&nbsp;&nbsp;}<br />
	}
	</code>

	<h2>result_array()</h2>
	
	<p>This function returns the query result as a pure array, or FALSE on failure.  Typically you'll use this in a foreach loop, like this:</p>
	<code>
	$query = $this->db->query("YOUR QUERY");<br />
	<br />
	foreach ($query->result_array() as $row)<br />
	{<br />
	&nbsp;&nbsp;&nbsp;echo $row['title'];<br />
	&nbsp;&nbsp;&nbsp;echo $row['name'];<br />
	&nbsp;&nbsp;&nbsp;echo $row['body'];<br />
	}</code>
	

	<h2>row()</h2>
	
	<p>This function returns a single result row.  If your query has more than one row, it returns only the first row.  
	The result is returned as an <strong>object</strong>.  Here's a usage example:</p>
	<code>
	$query = $this->db->query("YOUR QUERY");<br />
	<br />
	if ($query->num_rows() > 0)<br />
	{<br />
	&nbsp;&nbsp;&nbsp;$row = $query->row();
	<br /><br />
	&nbsp;&nbsp;&nbsp;echo $row->title;<br />
	&nbsp;&nbsp;&nbsp;echo $row->name;<br />
	&nbsp;&nbsp;&nbsp;echo $row->body;<br />
	}
	</code>
	
	<p>If you want a specific row returned you can submit the row number as a digit in the first parameter:
	
	<code>$row = $query->row(<dfn>5</dfn>);</code>


	<h2>row_array()</h2>

	<p>Identical to the above <var>row()</var> function, except it returns an array.  Example:</p>

	<code>
	$query = $this->db->query("YOUR QUERY");<br />
	<br />
	if ($query->num_rows() > 0)<br />
	{<br />
	&nbsp;&nbsp;&nbsp;$row = $query->row_array();
	<br /><br />
	&nbsp;&nbsp;&nbsp;echo $row['title'];<br />
	&nbsp;&nbsp;&nbsp;echo $row['name'];<br />
	&nbsp;&nbsp;&nbsp;echo $row['body'];<br />
	}
	</code>

	
	<p>If you want a specific row returned you can submit the row number as a digit in the first parameter:
	
	<code>$row = $query->row_array(<dfn>5</dfn>);</code>
	
 
 	<p>In addition, you can walk forward/backwards/first/last through your results using these variations:</p>

<p>
	<strong>$row = $query->first_row()</strong><br />
	<strong>$row = $query->last_row()</strong><br />
	<strong>$row = $query->next_row()</strong><br />
	<strong>$row = $query->previous_row()</strong>
</p>

<p>By default they return an object unless you put the word "array" in the parameter:</p>

<p>
	<strong>$row = $query->first_row('array')</strong><br />
	<strong>$row = $query->last_row('array')</strong><br />
	<strong>$row = $query->next_row('array')</strong><br />
	<strong>$row = $query->previous_row('array')</strong>
</p>



	

</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="queries.html">Queries</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="active_record.html">Active Record Pattern</a>
<p>
<p><a href="http://www.codeigniter.com">Code Igniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 &nbsp;&middot;&nbsp; <a href="http://www.pmachine.com">pMachine, Inc.</a></p>
</div>

</body>
</html>