lectura de datos de una base de datos
Ya he explicado en otro post cómo conectar a una base de datos mysql desde php. Ahora voy a explicar cómo trabajar con esta base de datos, en concreto mostrar los datos de una tabla.
Parto de la premisa de que se ha aprendido a utilizar el script anteriormente citado para la conexión y selección de base de datos, y que se ha configurado correctamente para acceder a una BD donde existe la tabla ’superheroes’, con los campos ‘id’, ‘name’, ’special_powers’.
Vamos allá : leemos los datos de la tabla. Para ello, usamos la función php mysql_query(); para ejecutar código sql en el servidor de bases de datos. Vamos a leer los campos importantes (en este caso, los tres) de la tabla superheroes.
$query = "SELECT id, name, special_powers FROM superheroes";
$resultset = @mysql_query($query,$identifier);
if (@mysql_num_rows($resultset) > 0)
{
while ($result = mysql_fetch_array($resultset))
{
echo $result['id'] . ' | ' . $result['name'] . ' | ' . $result['special_powers'] . '<br />' ;
}
}
Una vez hemos leído los datos podemos inmediatamente mostrarlos por pantalla, o almacenarlos en una matriz asociativa para emplearlos más adelante. Por ejemplo, cambiando el código
while ($result = mysql_fetch_array($resultset))
{
echo $result['id'] . ' | ' . $result['name'] . ' | ' . $result['special_powers'] . '<br />' ;
}
por
$i = 0;
while ($result = mysql_fetch_array($resultset))
{
$resultsArray[$i] = $result ;
$i++;
}
de modo que más adelante podremos mostrar estos datos como mejor nos convenga.
Hay que tener en cuenta que el script de conexión a base de datos que ya vimos, abre y cierra la conexión en un mismo paso. Por tanto, ahora tendremos que integrarlo con la parte de lectura de datos que acabamos de ver. El código resultante quedará así:
/* script para conexión con base de datos y lectura de tablas
* @author Jorge Albaladejo Pomares [jorge@abc-webs.net]
* @license Creative Commons License http://creativecommons.org/licenses/by-sa/3.0/
*/
//
//variables
$host = "localhost";
$user = "john_smith";
$pass = "h01y_GRail";
$db = "pastafarian_food";
//
//conexion
$identifier = @mysql_connect ($host,$user,$pass);
if (!$identifier)
{
die("Error conectando a la base de datos: ".mysql_error());
}
//
//selección de base de datos
$db_selected = mysql_select_db ( $db, $identifier );
if (!$db_selected)
{
die ("No se puede usar la base de datos: " . mysql_error());
}
//
//
$query = "SELECT id, name, special_powers FROM superheroes";
$resultset = @mysql_query($query,$identifier);
if (@mysql_num_rows($resultset) > 0)
{
while ($result = mysql_fetch_array($resultset))
{
echo $result['id'] . ' | ' . $result['name'] . ' | ' . $result['special_powers'] . '<br />' ;
}
}
//
//
//cierro conexión
mysql_close($identifier);
Como vemos, el código queda un poco farragoso, así que lo vamos a organizar un poquito creando tres funciones: la primera, conectará con la base de datos, la segunda, leerá la tabla, y la tercera realizará la conexión. Vamos allá.
/* script para conexión con base de datos y lectura de tablas, organizado en funciones
* @author Jorge Albaladejo Pomares [jorge@abc-webs.net]
* @license Creative Commons License http://creativecommons.org/licenses/by-sa/3.0/
*/
//
//
/* conecta a la base de datos con unos parámetros por defecto
* @return el identificador de la conexión
*/
function connect()
{
//variables
$host = "localhost";
$user = "john_smith";
$pass = "h01y_GRail";
$db = "pastafarian_food";
//
//conexion
$identifier = @mysql_connect ($host,$user,$pass);
if (!$identifier)
{
die("Error conectando a la base de datos: ".mysql_error());
}
//
//selección de base de datos
$db_selected = mysql_select_db ( $db, $identifier );
if (!$db_selected)
{
die ("No se puede usar la base de datos: " . mysql_error());
}
return($identifier);
}
//
//
/* consulta los campos seleccionados de una tabla concreta de la base de datos
*@param table la tabla concreta
*@param fields los campos a consultar
*/
function readTable($table,$fields,$identifier)
{
//variables
$resultsArray = array();
//campos
$fieldsList = "";
foreach($fields as $key=>$value)
{
$fieldsList .= $value . ",";
}
//quitamos la última coma
$fieldsList = substr($fieldsList,0,strlen($fieldsList)-1);
//consulta
$query = "SELECT " . $fieldsList . " FROM " . $table;
$resultset = @mysql_query($query,$identifier);
if (@mysql_num_rows($resultset) > 0)
{
$i = 0;
while ($result = mysql_fetch_array($resultset))
{
$resultsArray[$i] = $result ;
$i++;
}
}
return($resultsArray);
}
//
//
/* cierra la conexión y libera los recursos
*@param identifier la conexión a cerrar
*/
function disconnect($identifier)
{
//aquí podríamos realizar una serie de rutinas de limpieza de variables, etc
mysql_close($identifier);
}
//
//
/* script principal */
$token = connect();
$fields = array('id', 'name', 'special_powers');
$results = readTable('superheroes',$fields,$token);
foreach($results as $result)
{
foreach($fields as $key)
{
echo $key . " => " . $result[$key] . "<br />";
}
echo "<br />";
}
disconnect($token);
Hecho esto, lo más práctico es almacenar las funciones que acabamos de crear en un archivo externo de librerías y funciones útiles, y así reducir al mínimo el tamaño de nuestro script. En este ejemplo, las funciones connect(), readTable() y disconnect() han sido movidas a un archivo llamado functions.php en el mismo directorio que el script principal. El código finalmente queda así:
/* script para conexión con base de datos y lectura de tablas, organizado en funciones
* @author Jorge Albaladejo Pomares [jorge@abc-webs.net]
* @license Creative Commons License http://creativecommons.org/licenses/by-sa/3.0/
*/
//
//main functions
include('functions.php');
//main script
$token = connect();
$fields = array('id', 'name', 'special_powers');
$results = readTable('superheroes',$fields,$token);
foreach($results as $result)
{
foreach($fields as $key)
{
echo $key . " => " . $result[$key] . "<br />";
}
echo "<br />";
}
disconnect($token);
Hay que tener en cuenta que este script puede ser inseguro si se le ataca con sql injection, de esto hablaré más adelante en otras publicaciones.
Deja tu comentario
Si tu comentario no aparece inmediatamente no te preocupes, los comentarios se moderan antes de publicarlos por problemas con los spammers. Cuando hayas enviado varios comentarios y seas una persona de confianza, tus comentarios aparecerán inmediatamente sin necesidad de moderación.






