<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Isern Palaus &#187; consultas mysql</title>
	<atom:link href="http://blog.ipalaus.es/tag/consultas-mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ipalaus.es</link>
	<description>PHP, CodeIgniter y jQuery</description>
	<lastBuildDate>Sat, 10 Apr 2010 13:10:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Consultas MySQL en CodeIgniter</title>
		<link>http://blog.ipalaus.es/consultas-mysql-en-codeigniter</link>
		<comments>http://blog.ipalaus.es/consultas-mysql-en-codeigniter#comments</comments>
		<pubDate>Mon, 17 Mar 2008 10:49:28 +0000</pubDate>
		<dc:creator>Isern Palaus</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[consultas mysql]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.ipalaus.es/consultas-mysql-en-codeigniter</guid>
		<description><![CDATA[Aunque pueda parecer difícil, hacer consultas en MySQL en CodeIgniter es la cosa más fácil del mundo. Y no solo con MySQL sino con todos los protocolos soportados por el framework.  Es importante, sobretodo, que tengamos nuestro CodeIgniter correctamente configurado. Podéis echarle una ojeada al artículo de configuración y iniciación para ver como configuramos <a href="http://blog.ipalaus.es/consultas-mysql-en-codeigniter" class="more-link">Más &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Aunque pueda parecer difícil, hacer consultas en <a href="http://www.mysql.org">MySQL</a> en <a href="http://www.codeigniter.com">CodeIgniter</a> es la cosa más fácil del mundo. Y no solo con MySQL sino con todos los protocolos soportados por el <em>framework</em>.  Es importante, sobretodo, que tengamos nuestro <a href="http://www.codeigniter.com">CodeIgniter</a> correctamente configurado. Podéis echarle una ojeada al artículo de <a href="http://blog.ipalaus.es/codeigniter-iniciacion-y-configuracion">configuración y iniciación</a> para ver como configuramos los datos de MySQL.</p>
<p><a href="http://www.codeigniter.com">CodeIgniter</a>, a parte, nos da la posibilidad de trabajar con más de una base de datos a la vez, configurando y conectando específicamente a una u otra dependiendo de las necesidades. Sin embargo, no es el objeto de esta explicación. </p>
<p>Supongamos que queremos hacer una consulta parecida a la siguiente:<br />
<code>SELECT * FROM entradas</code></p>
<p>Lo normal en PHP sería usar un <em>mysql_query(&#8220;SELECT * FROM entradas&#8221;);</em>, sin embargo en <a href="http://www.codeigniter.com">CodeIgniter</a> (y usando librería específica) lo usaríamos de la siguiente forma:<br />
[code lang="php"]<br />
$this->db->query("SELECT * FROM entradas");<br />
[/code]</p>
<h2>GET</h2>
<p>Conclusión, podemos usarlo de la misma manera. Luego si quisiéramos estructurar los resultados podríamos usar la función <a href="http://www.php.net/foreach"><em>foreach</em></a> de PHP. Sin embargo, hay una manera mucho más fácil en <a href="http://www.codeigniter.com">CodeIgniter</a> de tratar las consultas. Ellos lo llaman el <em>Active Record Class</em> y se emplearía, para el ejemplo de antes, así:<br />
[code lang="php"]<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas;<br />
[/code]</p>
<p>También en <em>$this->db->get();</em> es posible usar un segundo parámetro para especificar un <em>LIMIT</em>:<br />
[code lang="php"]<br />
$query = $this->db->get("entradas", 10, 20);</p>
<p>// Genera: SELECT * FROM entradas LIMIT 20,10<br />
[/code]</p>
<h2>SELECT</h2>
<p>También podemos especificar el SELECT con $this->db->select(); tipo:<br />
[code lang="php"]<br />
$query = $this->db->select("id,title,body");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT id,title,body FROM entradas<br />
[/code]</p>
<p>Existen algunas funciones de MySQL que tienen una propiedad de <em>SELECT</em> específica en <a href="http://www.codeigniter.com">CodeIgniter</a>, sin embargo, solo los listaré ya que no los usaremos en aplicaciones básicas:</p>
<ul>
<li><em>$this->db->select_max();</em></li>
<li><em>$this->db->select_min();</em></li>
<li><em>$this->db->select_avg();</em></li>
<li><em>$this->db->select_sum();</em></li>
</ul>
<h2>JOIN</h2>
<p>Esto nos permite unir dos tablas tal que así:<br />
[code lang="php"]<br />
$query = $this->db->join("comentarios", "comentarios.id = entradas.id");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas JOIN comentarios ON comentarios.id = entradas.id<br />
[/code]</p>
<h2>WHERE</h2>
<p>[code lang="php"]<br />
$query = $this->db->where("id","38");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas WHERE id = '38'<br />
[/code]</p>
<p>Si quisiéramos podríamos unir varios WHERE, simplemente añadiendo otras condiciones:<br />
[code lang="php"]<br />
$query = $this->db->where("id","38");<br />
$query = $this->db->where("name","Isern");<br />
$query = $this->db->where("surname","Palaus");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas WHERE id = '38' AND name = 'Isern' AND surname = 'Palaus'<br />
[/code]</p>
<p>Pero claro, no todo son igualdades. Quizás queremos buscar una cosa que sea más pequeña que, o diferente, o mayor, etcétera. La forma es especificar en el primer campo, si no hay nada se tomará <em>=</em> por defecto:<br />
[code lang="php"]<br />
$query = $this->db->where("id >","38");<br />
$query = $this->db->where("name !=","Isern");<br />
$query = $this->db->where("surname","Palaus");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas WHERE id > '38' AND name != 'Isern' AND surname = 'Palaus'<br />
[/code]</p>
<p>Al igual que <strong>SELECT</strong>, hay muchas más propiedades:</p>
<ul>
<li><em>$this->db->or_where();</em></li>
<li><em>$this->db->where_in();</em></li>
<li><em>$this->db->or_where_in();</em></li>
<li><em>$this->db->where_not_in();</em></li>
<li><em>$this->db->or_where_not_in();</em></li>
</ul>
<h2>LIKE</h2>
<p>[code lang="php"]<br />
$query = $this->db->like("body","sentencia");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entras LIKE body = '%sentencia%'<br />
[/code]</p>
<p>Sin embargo, podría ser que no quisiéramos que las dos partes fueran aleatorias&#8230; De modo que podemos especificar en un tercer campo el <em>%</em> donde debe estar. Puede ser: <em>before</em>, <em>both</em> y <em>after</em>.<br />
[code lang="php"]<br />
$query = $this->db->like("body","sentencia1","before");<br />
$query = $this->db->like("title","sentencia2","both");<br />
$query = $this->db->like("slug","sentencia3","after");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas LIKE body = '%sentencia1' AND title = '%sentencia2%' AND slug = 'sentencia3%'<br />
[/code]</p>
<p>Otros tipos de <b>LIKE</b> que podemos usar son:</p>
<ul>
<li><em>$this->db->not_like();</em></li>
<li><em>$this->db->or_not_like();</em></li>
<li><em>$this->db->group_by();</em></li>
</ul>
<h2>GROUP BY</h2>
<p>En otras versiones se conocia como <em>$this->db->groupby();</em> pero ha sido eliminado.<br />
[code lang="php"]<br />
$query = $this->db->group_by("title");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas GROUP BY title<br />
[/code]</p>
<h2>DISTINCT</h2>
<p>Para añadir DISTINCT a la consulta:<br />
[code lang="php"]<br />
$query = $this->db->distinct();<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT DISTINCT * FROM entradas<br />
[/code]</p>
<h2>HAVING</h2>
<p>[code lang="php"]<br />
$query = $this->db->having("uid = 32");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas HAVING uid = 32<br />
[/code]</p>
<p>También es posible usar <em>$this->db->or_having();</em></p>
<h2>ORDER BY</h2>
<p><em>$this->db->order_by();</em> permite ordenar un resultado en una dirección especifica. En el primer parámetro especificamos el nombre de la columna y en el segundo la dirección. Las posibilidades del segundo parámetro son: <em>ASC</em>, <em>DESC</em> y <em>RANDOM</em>.<br />
[code lang="php"]<br />
$query = $this->db->order_by("id","DESC");<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas ORDER BYid DESC<br />
[/code]</p>
<h2>LIMIT</h2>
<p>Permite especificar el limite de resultados que quieres que devuelva:<br />
[code lang="php"]<br />
$query = $this->db->limit(30);<br />
$query = $this->db->get("entradas");</p>
<p>// Genera: SELECT * FROM entradas LIMIT 10<br />
[/code]</p>
<h2>COUNT ALL</h2>
<p>Permite contar el numero de entradas que hay en una tabla:<br />
[code lang="php"]<br />
$num = $this->db->count_all("entradas");</p>
<p>// Genera: un numero que lo podemos tratar como una variable o escribirlo<br />
[/code]</p>
<h2>COUNT ALL RESULTS</h2>
<p>A diferencia de <strong>COUNT ALL</strong>, nos permite contar el numero de resultados en la actual consulta:<br />
[code lang="php"]<br />
$query = $this->db->where("name","Isern");<br />
$query = $this->db->get("entradas");</p>
<p>$num = $this->db->count_all_results();</p>
<p>// Genera: un numero<br />
[/code]</p>
<h2>INSERT</h2>
<p>Para insertar datos usando el Active Record de <a href="http://www.codeigniter.com">CodeIgniter</a> debemos usar un array luego insertar:<br />
[code lang="php"]<br />
$insert = array("title" => "Test",<br />
                     "body" => "Test",<br />
                     "name" => "Isern",<br />
                     "surname" => "Palaus");</p>
<p>$this->db->insert("entradas",$insert);</p>
<p>// Genera: INSERT INTO entradas (title, body, name, surname) VALUES ('Test', 'Test', 'Isern', 'Palaus')<br />
[/code]</p>
<h2>UPDATE</h2>
<p>Al igual que <strong>INSERT</strong> usaremos un array para insertar, sin embargo si queremos actualizar, por ejemplo, una entrada deberemos especificar un where:<br />
[code lang="php"]<br />
$update = array("title" => "Test",<br />
                      "body" => "Test",<br />
                      "name" => "Isern",<br />
                      "surname" => "Palaus");</p>
<p>$this->db->where("id","3");<br />
$this->db->update("entradas",$update);</p>
<p>// Genera: UPDATE entradas SET title = 'Test', body = 'Test', name = 'Isern', surname = 'Palaus' WHERE id = 3<br />
[/code]</p>
<h2>DELETE</h2>
<p>Al igual que UPDATE usaremos un ID para especificar cual es la que queremos borrar:<br />
[code lang="php"]<br />
$this->db->where("id","3");<br />
$this->db->delete("entradas");</p>
<p>// Genera: DELETE FROM entradas WHERE id = 3<br />
[/code]</p>
<p>Y esto es más o menos todo lo que nos ofrece <a href="http://www.codeigniter.com">CodeIgniter</a> para tratar nuestras bases de datos. Espero que haya servido de ayuda a más de uno ya que muchas visitas recibidas buscaban como usar MySQL en <a href="http://www.codeigniter.com">CodeIgniter</a>.</h2>
]]></content:encoded>
			<wfw:commentRss>http://blog.ipalaus.es/consultas-mysql-en-codeigniter/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>
