miércoles, 18 de septiembre de 2013

Consultas select con mysql


La clase mysql de PHP permite establecer una conexión a una de base de dato mysql.

A continuación veremos como usar algunas funciones básicas de mysql, así como extraer todas las filas, extraer una determinada fila, poner límites a la consulta, extraer filas ascendentemente y descendentemente, contar el número filas, extraer filas mediante patrones de búsqueda con LIKE y MATCH AGAINST o saber si una fila existe en la tabla(útil para la validación de sesiones).

Para este ejercicio es necesario tener en la base de datos la siguiente tabla ...

articulos.sql

CREATE TABLE IF NOT EXISTS `articulos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` text NOT NULL,
  `contenido` text NOT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `titulo` (`titulo`,`contenido`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `articulos` (`id`, `titulo`, `contenido`) VALUES
(1, 'PHP es uno de los lenguajes más utilizados', 'PHP actúa del lado del servidor, enviando y recibiendo información del cliente.'),
(2, 'La vida está muy cara', 'La vida está muy cara por culpa de tanto político ladrón.'),
(3, 'Estudiar es bueno para la salud', 'Si estudias lo que te gusta, te mantedrás sano.'),
(4, 'Si sabes PHP puedes encontrar trabajo ', 'Si sabes PHP puedes encontrar trabajo en cualquier parte del mundo.');


Primeramente hay que establecer la conexión mysql ...

#Crear la conexión
$datos_de_conexion = mysql_connect("localhost", "root", "password");
$base_de_datos = "pruebas"; #Tu base de datos aquí
$conexion = mysql_select_db($base_de_datos, $datos_de_conexion);


Extraer todas las filas

#extraer todas las filas
$consulta = "SELECT titulo, contenido FROM articulos";
$resultado = mysql_query($consulta);
echo "<span style='color: blue;'>Extracción de todas las filas ...</span> <br><br>";
while($fila = mysql_fetch_array($resultado))
{
echo "Título: " . $fila["titulo"] . "<br>";
echo "Contenido: " . $fila["contenido"] . "<br><hr>";
}


Extraer una determinada fila

#Extraer una determinada fila
$consulta = "SELECT titulo, contenido FROM articulos WHERE id=2";
$resultado = mysql_query($consulta);
$fila = mysql_fetch_array($resultado);
echo "<span style='color: blue;'>Extracción de una fila - WHERE ...</span> <br><br>";
echo "Título: " . $fila["titulo"] . "<br>";
echo "Contenido: " . $fila["contenido"] . "<br><hr>";


Limitando la consulta
#Limitando la consulta
echo "<span style='color: blue;'>Limitando la extracción de filas ...</span> <br><br>";
$consulta = "SELECT titulo, contenido FROM articulos ORDER BY id LIMIT 2, 2";
$resultado = mysql_query($consulta);
while($fila = mysql_fetch_array($resultado))
{
echo "Título: " . $fila["titulo"] . "<br>";
echo "Contenido: " . $fila["contenido"] . "<br><hr>";
}


Orden de extracción ascendente(ASC) o descendente(DESC)
#Orden de extracción ascendente(ASC) o descendente(DESC)
echo "<span style='color: blue;'>Extracción de filas Ascendente o Descendente ...</span> <br><br>";
$consulta = "SELECT titulo, contenido FROM articulos ORDER BY id DESC LIMIT 0, 4";
$resultado = mysql_query($consulta);
while($fila = mysql_fetch_array($resultado))
{
echo "Título: " . $fila["titulo"] . "<br>";
echo "Contenido: " . $fila["contenido"] . "<br><hr>";
}


Contando el número de filas de la tabla

#Contando el número de filas
$consulta = "SELECT COUNT(id) as total FROM articulos";
$resultado = mysql_query($consulta);
$fila = mysql_fetch_array($resultado);
$total = $fila["total"];
echo "<span style='color: blue;'>Total de filas: $total</span> <br><br>";


Seleccionando filas a través de búsqueda de patrones con LIKE

#Seleccionando filas a través de búsqueda de patrones con LIKE
echo "<span style='color: blue;'>Extracción de filas mediante búsqueda de coincidencias con LIKE ...</span> <br><br>";
$consulta = "SELECT titulo, contenido FROM articulos WHERE titulo LIKE '%PHP%'";
$resultado = mysql_query($consulta);
while($fila = mysql_fetch_array($resultado))
{
echo "Título: " . $fila["titulo"] . "<br>";
echo "Contenido: " . $fila["contenido"] . "<br><hr>";
}


Seleccionar filas a través de búsqueda de patrones con MATCH AGAINST

#Seleccionar filas a través de búsqueda de patrones con MATCH AGAINST
#Para este proceso la tabla debe ser del tipo MyISAM
#Y convertir las columnas donde se quiere realizar la búsqueda en FULLTEXT
#La tabla de este ejercicio ya ha sido convertido así que no es necesario realizar los siguientes cambios ...
#ALTER TABLE articulos ENGINE = MyISAM;
#ALTER TABLE articulos ADD FULLTEXT(titulo, contenido);
echo "<span style='color: blue;'>Extracción de filas mediante búsqueda de coincidencias con MATCH AGAINST ...</span> <br><br>";
$consulta = "SELECT titulo, contenido FROM articulos WHERE MATCH(titulo, contenido) AGAINST ('%vida%' IN BOOLEAN MODE)";
$resultado = mysql_query($consulta);
while($fila = mysql_fetch_array($resultado))
{
echo "Título: " . $fila["titulo"] . "<br>";
echo "Contenido: " . $fila["contenido"] . "<br><hr>";
}


Saber si una fila existe en la tabla

#Saber si una fila existe
#Ten en cuenta que en la tabla no hay ninguna fila con id=5
$consulta = "SELECT titulo, contenido FROM articulos WHERE id=5";
$resultado = mysql_query($consulta);
$fila = mysql_fetch_array($resultado);
if ($fila > 0)
{
echo "<span style='color: blue;'>Extracción de una fila - WHERE ...</span> <br><br>";
echo "Título: " . $fila["titulo"] . "<br>";
echo "Contenido: " . $fila["contenido"] . "<br><hr>";
}
else
{
echo "<span style='color: red;'>La fila no se encuentra en la base de datos</span>";
}