<!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="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/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.5.0</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;
Database Example Code
</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>Database Quick Start: Example Code</h1>

<p>The following page contains example code showing how the database class is used.  For complete details please
read the individual pages describing each function.</p>


<h2>Initializing the Database Class</h2>

<p>The following code loads and initializes the database class based on your <a href="configuration.html">configuration</a> settings:</p>

<code>$this->load->database();</code>

<p>Once loaded the class is ready to be used as described below.</p>

<p>Note: If all your pages require database access you can connect automatically.  See the <a href="connecting.html">connecting</a> page for details.</p>


<h2>Standard Query With Multiple Results (Object Version)</h2>

<code>$query = $this->db->query('SELECT name, title, email FROM my_table');<br />
<br />
foreach ($query->result() as $row)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $row->title;<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $row->name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $row->email;<br />
}<br />
<br />
echo 'Total Results: ' . $query->num_rows();
</code>

<p>The above <dfn>result()</dfn> function returns an array of <strong>objects</strong>.  Example:  $row->title</p>


<h2>Standard Query With Multiple Results (Array Version)</h2>

<code>$query = $this->db->query('SELECT name, title, email FROM my_table');<br />
<br />
foreach ($query->result_array() as $row)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $row['title'];<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $row['name'];<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $row['email'];<br />
}</code>

<p>The above <dfn>result_array()</dfn> function returns an array of standard array indexes.  Example:  $row['title']</p>


<h2>Testing for Results</h2>

<p>If you run queries that might <strong>not</strong> produce a result, you are encouraged to test for a result first
using the <dfn>num_rows()</dfn> function:</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>Standard Query With Single Result</h2>

<code>$query = $this->db->query('SELECT name FROM my_table LIMIT 1');<br />
<br />
$row = $query->row();<br />
echo $row->name;<br />
</code>

<p>The above <dfn>row()</dfn> function returns an <strong>object</strong>.  Example:  $row->name</p>


<h2>Standard Query With Single Result (Array version)</h2>

<code>$query = $this->db->query('SELECT name FROM my_table LIMIT 1');<br />
<br />
$row = $query->row_array();<br />
echo $row->['name'];<br />
</code>

<p>The above <dfn>row_array()</dfn> function returns an <strong>array</strong>.  Example:  $row->['name']</p>


<h2>Standard Insert</h2>

<code>
$sql = "INSERT INTO mytable (title, name) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";<br />
<br />
$this->db->query($sql);<br />
<br />
echo $this->db->affected_rows();
</code>




<h2>Active Record Query</h2>

<p>The <a href="active_record.html">Active Record Pattern</a> gives you a simplified means of retrieving data:</p>

<code>
$query = $this->db->get('table_name');<br />
<br />
foreach ($query->result() as $row)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $row->title;<br />
}</code>

<p>The above <dfn>get()</dfn> function retrieves all the results from the supplied table. 
The <a href="active_record.html">Active Record</a> class contains a full compliment of functions
for working with data.</p>


<h2>Active Record Insert</h2>

<code>
$data = array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => $title,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => $name,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date' => $date<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
$this->db->insert('mytable', $data);
<br /><br />
// Produces: INSERT INTO mytable (title, name, date) VALUES ('{$title}', '{$name}', '{$date}')</code>




</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="index.html">Database Class</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="configuration.html">Database Configuration</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>