Sunteți pe pagina 1din 22

COMO HACER UNA CONSULTA EN PHP Y MYSQL

En esta ocasin aprenders de forma sencilla como programar en php una consulta
a tu base de datos (recuerda estamos trabajando con mysql, php y apache). Si tienes que entregar un proyecto
pronto, si tienes que terminar esa tarea a entregar, si quieres sobresalir en la clase o bien estas aprendiendo a
programar en php, esto te ayudara, es como un mini tutorial para realizar consultas.

Si has tomado la decisin de aprender a programar en php para dedicarte a desarrollar proyectos como
freelance y obtener ingresos extras, ten por seguro que las tareas mas solicitadas son las consultas a una
bases de datos, por ejemplo: cuando tienes que obtener informacin especfica de un producto o bien cuando
necesitas mostrar informacin en tu pgina de inters para el visitante.

De echo si estas desarrollando una base de datos para un proyecto escolar ten por seguro que mientras mas
eficiente sean tus consultas mejor ser tu ponderacin en la calificacin, las bases de datos que mayor xito
tienen son las que entregan mejores resultados en las consultas.

Vamos pues a explicar paso a paso como puedes realizar una consulta, antes recuerda tener instalado el
apache, el php y el mysql si an no los tienes revisa mis artculos anteriores hay detallo de donde descargarlo,
como instalarlo y configurarlo.

Explico el contexto, tengo una base de datos llamada almacen y en ella he creado una tabla con los siguientes
campos y que se llamaproductos (id, codigo, nombre, precio, existencia), en el phpmyadmin de localhost;
lee los artculos anteriores para que veas como se configura y dentro de ella he insertado los siguientes
registros: (Null, 1234, producto 1, 12, 34) y (Null, 3456, producto 3, 34, 45).

Paso 1: Generamos el documento html que contendr el formulario del cul pedimos la consulta, en este ejemplo
la consulta nos regresa el nombre, el precio y la existencia filtrado por el cdigo del producto, as que mi
formulario solo contiene dos elementos (el cuadro de texto para el cdigo del producto y el botn que ejecuta la
consulta), lo llame form_consulta.html:

<!- http://programarenphp.wordpress.com >


<html>
<header>
<title>Prueba de SELECT</title>
<h1>Hola, programando una consulta</h1>
</header>
<body>
<form name=consulta1 method=post action=ejecuta.php>
Codigo del producto:<input type=text name=codigo maxlength=4>
<input type=submit value=Aceptar>
</form>
</body>
</html>

Paso 2: desarrollamos el archivo ejecuta.php, que es el encargado de realizar la consulta y mostrar


el resultado, lo explico con comentarios dentro del mismo cdigo:

<?php
/* http://programarenphp.wordpress.com*/

/******** CONECTAR CON BASE DE DATOS **************** */


/******** Recuerda cambiar por tus datos ***********/
$con = mysql_connect(host,usuario,contrasea);
if (!$con){die(ERROR DE CONEXION CON MYSQL: . mysql_error());}
/* ********************************************** */
/********* CONECTA CON LA BASE DE DATOS **************** */
$database = mysql_select_db(almacen,$con);
if (!$database){die(ERROR CONEXION CON BD: .mysql_error());}
/* ********************************************** */
/*ejecutamos la consulta, que solicita nombre, precio y existencia de la
tabla productos */
$sql = SELECT nombre, precio, existencia FROM productos WHERE codigo='
.$_POST['codigo'].;
$result = mysql_query ($sql);
// verificamos que no haya error
if (! $result){
echo La consulta SQL contiene errores..mysql_error();
exit();
}else {
echo <table border=1><tr><td>Nombre</td><td>Precio</td><td>Existencia</td>
</tr><tr>;
//obtenemos los datos resultado de la consulta
while ($row = mysql_fetch_row($result)){
echo <td>.$row[0].</td><td>.$row[1].</td>
<td>.$row[2].</td>;
}
echo </tr></table>;
}
?>

Enseguida dejo la imagen con el resultado de ejecutar este cdigo:

Si te interesa descargar este ejemplo los puedes obtener dando click aqu.
http://programarenphp.wordpress.com/2010/11/02/como-hacer-una-consulta-en-php-y-mysql/

COMO REALIZAR UNA CONSULTA A TRES TABLAS CON UNA SOLA SENTENCIA SQL

Una de las cuestiones mas buscadas en la web, es precisamente la forma en como


consultar a dos o mas tablas. Si t tambin estas buscando lo mismo has llegado al lugar indicado y al
artculo correcto as que lelo completo y veras lo sencillo que es realizar la consulta.

Si te estas preguntando, qu hay en este artculo? Lo mismo o aqu si aprender lo que busco?, pues
djame adelantarte.Con un ejemplo prctico te voy a explicar paso a paso como t puedes realizar la
consulta a dos o mas tablas con una sola sentencia de SQL. Interesante verdad?, estoy seguro que con este
ejemplo no tendrs que buscar mas en internet y teahorraras tiempo que podrs usar para divertirte. No
me crees?, lee completo este articulo y al final me dejas tu comentario.
Antes de iniciar permteme un consejo, si de verdad deseas aprender a programar en php ya, al principio
crea siempre todos tus cdigos, es decir, no solo los descargues y los adaptes a tus necesidades, si no que
trascrbelos a mano y veras como tu aprendizaje se acelera.

Para este ejemplo es necesario que ya tengas configurada una base de datos con las siguientes
caractersticas:

Base de datos: tiendacds


o Tabla cajeros::campos(id int llave primaria, nombre varchar(60), pass varchar(6),
permisos int).
o Tabla ventas:: (id int llave primaria, fecha date, codigo_productovarchar(10), cantidad int,
id_cajeros int)
o Tabla productos: (id int llave, nombre varchar(60), codigo varchar(10), tipo varchar(10),
genero varchar(20), precio int, existencia int)

Es importante, para este ejemplo que veas la estructura, pero puedes bajar el archivo sql dando click en este
enlace, luego importas este archivo a tu base de datos (ojo el archivo SQL ya lleva algunos registros para ver
como funciona el siguiente cdigo).

Ahora vamos al cdigo que le he puesto por nombre registro.php;

<html>
<head>
<title>APRENDE A PROGRAMAR EN PHP ya!!</title>
</head>

<body>
<form name=producto method=post action=<?php echo $PHP_SELF; ?>>
Selecciona el producto:
<select name=producto>
<?php
$con = mysql_connect(localhost,root,pass) or die
(Error al conectar con MySQL.mysql_error());

mysql_select_db(tiendacds,$con) or die
(Error al seleccionar BD.mysql_error());
/* obtenemos los productos para mostrarlos en un combo-box */
$sql = SELECT nombre,codigo FROM productos ORDER BY nombre ASC;
$result = mysql_query($sql) or die (ERROR AL CARGAR LOS PRODUCTOS .mysql_error());
while ($campo = mysql_fetch_array($result))
echo <option value=$campo[codigo]>$campo[nombre]</option>;
?>
</select>
<input type=submit name=enviar value=Ver Reporte />
</form>
<?php
extract($_POST);
if (isset($producto)){
/////////////////////////////////////////////////////////////////////////////
//// AQUI LA SENTENCIA SQL ////////////////////////////////////////////////
$sql = SELECT productos.nombre AS np,productos.precio,cajeros.nombre,ventas.fecha,
ventas.cantidad FROM productos,cajeros,ventas WHERE ventas.codigo_producto=$producto AND

productos.codigo = ventas.codigo_producto AND cajeros.id = ventas.id_cajeros ;


///////////////////////////////////////////////////////////////////////////
$result = mysql_query($sql)or die (ERROR AL BUSCAR VENTAS .mysql_error());
$gt=0;
while ($campo = mysql_fetch_array($result)){
echo $gt == 0 ? <strong>PRODUCTO: <u>$campo[np]</u></strong>
<table border=1><tr><td>CAJERO</td><td>FECHA</td><td>TOTAL</td></tr>:";
echo <tr><td>$campo[nombre]</td><td>$campo[fecha]</td><td>.$campo['precio']*$campo['cantidad'].
/td></tr>;
$gt = $gt + ($campo['precio']*$campo['cantidad']);
}
echo </table><strong>TOTAL: <u>$gt</u></strong><br >;
}
?>
</body>
</html>

Si buscas como realizar una consulta a dos o mas tablas supongo que ya sabes cdigo HTML y ya sabes como mostrar los
resultados regresados por una consulta, as que solo me voy a enfocar a la sentencia SQL: SELECT productos.nombre
AS np, productos.precio, cajeros.nombre, ventas.fecha,ventas.cantidad FROM productos,cajeros,ventas WHERE
ventas.codigo_producto =$producto AND productos.codigo = ventas.codigo_producto AND cajeros.id =
ventas.id_cajeros.

La explico: despus del SELECT anoto los campos que necesito consultar anteponindole un punto y el
nombre de la tabla al que pertenecen, luego despus de FROM van las tres tablas implicadas separadas por
comas. Ya para obtener el resultado deseado debes filtrar con la clusula WHERE cuidando de utilizar
apropiadamente los campos que se relacionan en cada tabla. La siguiente imagen es una captura de
pantalla del cdigo en ejecucin.

El lenguaje de scripting PHP permite a los desarrolladores web para crear


un sitio web que muestra a los visitantes del sitio una gran variedad de conjuntos de datos dinmicos. Por ejemplo
, PHP puede ser utilizado para recuperar datos de productos a partir de una base de datos MySQL y presentar los
datos a la web en forma de un catlogo de productos en lnea. El desarrollador puede labrar el catlogo en lnea
con las reglas de hojas de estilo en cascada . MySQL , PHP y CSS son las tecnologas de cdigo abierto y puede
ser utilizado por el desarrollador sin costo. Instrucciones
1

Inicie su utilidad phpAdmin y crear una nueva tabla de MySQL para albergar los datos del producto. Nombre de la
tabla , "productos" , y colocar un campo en la tabla para cada elemento que desea que aparezca en el catlogo
de productos. Por ejemplo , estudiar cuidadosamente el siguiente ejemplo de comando SQL . Puede introducir
este comando en la lnea de comandos SQL de su utilidad phpAdmin . El comando inicia una nueva tabla de
productos y crea una identificacin, descripcin, upcNumber , nombre, precio, imagen y campo de marca de
tiempo.

CREATE TABLE ` yourDatabase ` . ` Productos (

` id ` INT ( 100 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

Descripcin NOT NULL,

`name VARCHAR ( 3000) NOT NULL, `

upcNumber VARCHAR ( 100 ) ` ` ` VARCHAR ( 100 ) NOT NULL,


` precio ` VARCHAR ( 100 ) ,

imagen NOT NULL ` VARCHAR ( 100 ) NOT NULL, `

timestamp tIMESTAMP ( 200 ) NOT NULL DEFAULT CURRENT_TIMESTAMP

) ENGINE = MYISAM
2

Rellenar los nuevos campos de datos con la informacin del producto . Coloque la informacin de cada producto
en el campo correspondiente . Usted puede hacer esto a mi hacer clic en el botn "Insertar " de la utilidad
phpAdmin . Por ejemplo , se debe colocar el nombre del producto en el campo del producto , nmero de UPC del
producto en el campo upcNumber y el nombre del archivo de la imagen de cada producto en el campo de la
imagen.
3

Recuperar los datos del catlogo utilizando PHP. PHP recupera la descripcin de cada producto de la base de
datos y muestra los datos en las que puede ser visto por los visitantes de su sitio. En este cdigo de ejemplo,
PHP consulta la base de datos utilizando la funcin mysql_query , coloca los datos de cada producto en una
matriz, recorre la matriz y asigna a cada elemento de datos del producto en una variable correspondiente.

mysql_connect ( "localhost ", " nombredeusuario ", " sucontrasea ") or die ( mysql_error ());

mysql_select_db ( " yourDatabaseName ") or die ( mysql_error ());


< p > $ data = mysql_query ( "SELECT * FROM productos ORDER BY Identificacin desc" )

or die ( mysql_error ( " Registros no encontrados ')) ;

while ($ datos = mysql_fetch_array ($ data) ) {

$ nombre = $ info [' name'] ;

$ descripcion = $ info [' description'] ;

$ upcNumber = $ info [' upcNumber '] ;

$ imageFile = $ info [' foto '] ;

$ precio = $ info [' precio '] ;


< p >}

>
4

impresin y el estilo de la salida de PHP con reglas CSS . En este ejemplo, estilos de imagen de presentacin de
cada producto para el visitante del sitio utilizando una regla CSS en lnea . La imagen ha sido flotado hacia la
izquierda, el nombre del producto ha sido colocado dentro de una etiqueta H1, el nmero UPC muestra dentro de
un tag H4, el precio del producto aparecer como H5 ttulo y la descripcin del producto aparecer en una
etiqueta de prrafo .

< img src = "< php echo $ imageFile ; ? >" /> < /div >

< php echo $ nombre ; ? > < /h1 >

< php echo $ upcNumber ; ? > < ;/h4 >

< php echo $ precio; ? > < /h5 >

< Descripcin php echo ; ? > < /p>


5

Coloque la salida de estilo dentro de loop array de cada producto. Esto mostrar una ocurrencia para cada
producto obtenido de la base de datos . El cdigo PHP completado ahora el siguiente aspecto

< php

mysql_connect ( "localhost ", " nombredeusuario ", " sucontrasea ") or die ( mysql_error () ) . ?

mysql_select_db ( " yourDatabaseName ") or die ( mysql_error ());

$ data = mysql_query ( "SELECT * FROM productos ORDER BY Identificacin desc" )

or die ( mysql_error ( " Registros no encontrados ')) ;

while ($ datos = mysql_fetch_array ( $ data ) ) {

$ nombre = $ info [' name '] ;

$ description = $ info [' description'] ;

$ upcNumber = $ info [' upcNumber '] ;

$ imageFile = $ info [' foto '] ;

$ precio = $ info [' precio '] ; ?

>

; < img src = "< php echo $ imageFile ; ? >" /> < /div >

< /h1 >

< php echo $ upcNumber ; ? > < /h4 >

< php echo $ precio; ? > < /h5 >

< php echo descripcin ; ? >

< php

>

http://aprendeaprogramarenphpya.com/blog/como-realizar-una-consulta-a-tres-tablas-con-una-sola-sentencia-sql.html#more-
230

http://ordenador.wingwit.com/Programacion/php-mysql-programming/93181.html

USO DE PHP CON MySQL. CONSULTAS BSICAS

Veremos algunas funciones bsicas para acceder a una base de datos MySQL desde PHP para recuperar
informacin, insertar informacin o borrar informacin.

Una cuestin a comentar es que el acceso a base de datos con PHP admite dos formas distintas: las funciones tipo
mysql, por ejemplo mysql_connect, son las ms antiguas, cuyo uso se desaconseja si se est trabajando con un
servidor con una versin de MySql moderna. Las funciones tipo mysqli, por ejemplo mysqli_connect, son las ms
modernas, cuyo uso se recomienda siempre que se est trabajando con servidores actualizados. Las funciones
mysqli pueden escribirse de dos formas: con estilo orientado a objetos o con estilo por procedimientos. Nosotros
vamos a ver cmo usar estas funciones con el estilo por procedimientos, que es ms sencillo inicialmente.

FUNCIN mysqli_connect (mysql_connect)


Esta funcin nos permite crear una conexin con una base de datos concreta.

La sintaxis que usaremos para esta funcin es:

$nombreConexion = mysqli_connect($hostname , $nombreUsuario ,


$contrasea);
Para servidores no actualizados usar mysql_connect en lugar de
mysqli_connect

La funcin devuelve una conexin almacenada en la variable $nombreConexion, o FALSE en caso de error. Los parmetros
que hemos indicado son:

$hostname es un nombre de servidor (dato que debemos consultar en nuestra cuenta de hosting).

$nombreUsuario es el nombre de usuario de base de datos, nombre que habremos especificado al crear la base de datos (si
no lo hemos hecho, puede ser el mismo que para acceder a cPanel root).

$contrasea es la contrasea de acceso para el usuario de base de datos, contrasea que habremos especificado al crear la
base de datos (si no lo hemos hecho, puede ser la misma que para acceder a cPanel root).

Esta funcin la entenderemos mejor con el ejemplo que veremos ms adelante.

FUNCIN mysqli_close (mysql_close)

Esta funcin nos permite cerrar la conexin con una base de datos anteriormente abierta. Siempre es recomendable cerrar una
conexin cuando hayamos terminado de usarla.

La sintaxis que usaremos es:

mysqli_close($nombreConexin);
Para servidores no actualizados usar mysql_close en lugar de
mysqli_close

La funcin devuelve TRUE si se ha cerrado correctamente FALSE en caso de errror.

El identificador o nombre de conexin ser aquel que hayamos obtenido previamente usando la funcin mysqli_connect.

Esta funcin la entenderemos mejor con el ejemplo que veremos ms adelante.

FUNCIN mysqli_select_db (mysql_select_db)

Esta funcin nos permite seleccionar una base de datos concreta dentro de todas las existentes en el servidor al que nos
conectemos.

La sintaxis que vamos a emplear es:


mysqli_ select_db ($nombreConexin, $nombreBaseDatos);
Para servidores no actualizados usar mysql_select_db ($nombreBaseDatos,
$nombreConexin);

La funcin devuelve TRUE si se ha realizado la seleccin correctamente FALSE en caso de errror.

El nombre de conexin ser aquel que hayamos obtenido previamente con la funcin mysqli_connect.

Esta funcin la entenderemos mejor con el ejemplo que veremos ms adelante.

FUNCIN mysqli_query (mysql_query)

Esta funcin nos permite ejecutar una consulta a la base de datos que especifiquemos.

La sintaxis que emplearemos es:

$result = mysqli_query($nombreConexion, "Consulta aqu");


mysqli_query($nombreConexion, $query);
Para servidores no actualizados usar $result = mysql_query("Consulta aqu",
$nombreConexion);

Donde "Consulta aqu" se refiere a una consulta realizada utilizando el lenguaje SQL de consultas a bases de datos, por

ejemplo una consulta puede ser "SELECT * FROM agenda", que podra traducirse como selecciona todas las filas de la tabla
agenda.

Esta funcin devuelve TRUE o FALSE para indicar si las operaciones UPDATE, INSERT o DELETE han tenido xito. Para la
operacin SELECT devuelve un nuevo identificador de resultado. UPDATE significa actualizar, INSERT significa insertar y
DELETE significa BORRAR. SELECT significa seleccionar.

El nombre de conexin ser aquel que hayamos obtenido previamente con la funcin mysqli_connect.

Esta funcin la entenderemos mejor con el ejemplo que veremos ms adelante.

RECUPERAR UN RESULTADO: DATA_SEEK, FETCH_ASSOC (MYSQL_RESULT)

Una sentencia de consulta normalmente devuelve un conjunto de resultados que segn el ejemplo de sintaxis anterior
tendramos en una variable denominada $result. Por ejemplo, podramos tener como resultados de una consulta lo siguiente:

nombre apellidos direccion telefono edad altura

Manuel Jess Lpez de la Rosa C/Juan Bautista N 3 658954875 32 1.80

Mara Manzano Cabezas C/Arco del triunfo N 7 695001002 19 1.99


La cuestin que nos planteamos ahora es: Cmo extraer el dato de una celda concreta? Por ejemplo el nombre de la primera
fila?

Para ello, usando la sintaxis mysqli escribiramos esto:

mysqli_data_seek ($result, numeroDeFila); tambin vlido $result-


>data_seek(numeroDeFila);
$extraido= mysqli_fetch_array($result); tambin vlido $extraido=$result-
>fetch_array();

Aqu estamos dando dos pasos: una sentencia como mysqli_data_seek ($result, 0); significara posicinate en la fila 0 de los

resultados (la primera fila). Tambin es vlido escribir $result->data_seek(0); que tiene el mismo efecto. Si escribiramos

$result->data_seek(15); signficara posicinate en la fila 16 de los resultados (tener en cuenta que se empieza a contar por
cero, de ah que 0, 1, 2, , 15 resulten 16 filas).

La sentencia $extraido= mysqli_fetch_array($result); indica que los valores existentes en la fila se introduzcan en un array

cuyos ndices en principio pueden ser tanto asociativos (el nombre de la columna) como numricos (empezanso por cero). Por

ejemplo si la primera columna en la tabla de la base de datos es <<ciudad>> podemos usar $extraido['ciudad'] para acceder

al valor existente en la fila con la que estemos trabajando para la columna ciudad. Igualmente podramos usar $extraido[0]

para referirnos a la primera columna, $extraido[1] para referirnos a la segunda columna, $extraido[2] para referirnos a la
tercera columna y as sucesivamente.

Sintaxis mysql: mysql_result

En servidores no actualizados se puede usar la funcin mysql_result aunque al no pertenecer a la serie de funciones mysqli no
est recomendado su uso.

La sintaxis es: mysql_result($result, $numeroDeFila, "identificadorDeLaColumna");

Esta funcin nos devuelve el contenido de la celda en la fila y columna indicadas en forma de string (cadena de caracteres) en
caso de xito, o FALSE en caso de error.

$result es el resultado obtenido previamente con una invocacin a la funcin mysql_query.

numeroDeFila es un nmero de fila dentro del resultado obtenido teniendo en cuenta que los nmeros de fila se cuentan
empezando desde cero.

identificadorDeLaColumna puede ser el ndice del campo (por ejemplo 0), el nombre del campo (por ejemplo ciudad), o el
nombre de la tabla punto nombre del campo (por ejemplo agenda.ciudad)

Finalmente, se puede especificar el nombre del campo que queremos extraer dentro de la fila (esto es opcional). Esta funcin
la entenderemos mejor con el ejemplo que veremos a continuacin.
EJEMPLO DE USO DE LAS FUNCIONES ANTERIORES.

Escribe este cdigo en un editor y gurdalo en un archivo de nombre ejemplo1.php (recuerda que antes debes haber creado la

base de datos y creado datos de ejemplo como hemos visto anteriormente). Recuerda tambin que debes cambiar y poner tus
propios valores en las funciones mysqli_connect y mysqli_select_db.

<html><head><meta charset="utf-8"></head>

<body>

<?php

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes

$result = mysqli_query($link, "SELECT * FROM agenda");

mysqli_data_seek ($result, 0);

$extraido= mysqli_fetch_array($result);

echo "- Nombre: ".$extraido['nombre']."<br/>";

echo "- Apellidos: ".$extraido['apellidos']."<br/>";

echo "- Direccin: ".$extraido['direccion']."<br/>";

echo "- Telfono: ".$extraido['telefono']."<br/>";

echo "- Edad: ".$extraido['edad']."<br/>";

mysqli_free_result($result);

mysqli_close($link);

?>

</body>
</html>

El cdigo con la sintaxis que no usa mysqli (no recomendado) sera:

<html>

<body>

<?php

$link = mysql_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysql_select_db("b7_10356956_mibasededatos", $link);

mysql_query("SET NAMES 'utf8'"); //Para que se muestren las tildes

$result = mysql_query("SELECT * FROM agenda", $link);

echo"Nombre: ".mysql_result($result, 0, "nombre")."<br>";

echo"Apellidos: ".mysql_result($result, 0, "apellidos")."<br>";

echo"Direccin: ".mysql_result($result, 0, "direccion")."<br>";

echo"Telfono:".mysql_result($result, 0, "telefono")."<br>";
echo"Edad:".mysql_result($result, 0, "edad")."<br>";

echo"Altura:".mysql_result($result, 0, "altura")."<br>";

mysql_free_result($result);

mysql_close($link);

?>

</body>
</html>

En este cdigo lo que hemos hecho es usar las funciones vistas anteriormente y la base de datos y tablas que creamos en

anteriores apartados del curso. Con todo ello lo que hacemos es realizar una consulta a la base de datos y mostrar los
resultados por pantalla.

Interpretemos las lneas que hemos escrito:

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

Con esta lnea introducimos el identificador de conexin en una variable denominada $link. Invocamos la funcin

mysqli_connect pasndole como parmetros el nombre del hosting, el nombre de usuario y la contrasea. Estos datos
debemos conocerlos (o consultarlos) previamente.

mysqli_select_db($link, "b7_10356956_mibasededatos");

Con esta lnea seleccionamos la base de datos pasndole a la funcin como parmetros el identificador de conexin (que
hemos obtenido y guardado en una variable previamente) y el nombre de base de datos.

$result = mysqli_query($link, "SELECT * FROM agenda");

Con esta lnea seleccionamos todos los registros (filas) y campos (columnas) existentes en nuestra base de datos. Para

seleccionar todos los registros escribimos SELECT *. A continuacin indicamos la tabla de la cual queremos obtener dichos

registros y esto lo expresamos con la sintaxis FROM agenda, siendo agenda el nombre de la tabla en la base de datos. En la
llamada a la funcin incluirmos el identificador de conexin que hemos obtenido previamente.

Con la sentencia mysqli_data_seek ($result, 0); nos posicionamos en la primera fila (fila cero) de los resultados de la consulta.

Con la sentencia $extraido= mysqli_fetch_array($result); introducimos en un array al que denominamos $extraido los datos de
la fila cero obtenidos de la consulta.

Finalmente mostramos por pantalla los resultados.

En la versin que no usa mysqli (no recomendada) con la sentencia mysql_result($result, 0, "nombre") obtenemos el campo
nombre del primer registro (registro 0) del resultado de la consulta que hemos almacenado previamente en $result.
El resultado de invocar el archivo que hemos creado ser que se nos muestre por pantalla el nombre, apellidos, direccin,
telfono, edad y altura almacenados en la primera fila de nuestra base de datos. Algo similar a esto:

Resumiendo lo que hemos hecho, hemos usado la funcin mysqli_connect(), que abre una conexin con el servidor MySQL en

el Host especificado (en este ejemplo la mquina donde est alojada el servidor MySQL es sql203.byethost7.com, pero t

tendrs que introducir tu propio dato). Tambin hemos especificado un usuario (b7_10356956 en este ejemplo, pero t

tendrs que introducir tu propio dato), y un password para el usuario indicado (tendrs que escribir tu password de usuario de
base de datos).

Si la conexin ha tenido xito, la funcin mysqli_connect() devuelve un identificador de dicha conexin que es almacenado en
la variable $link. Si no tuviera xito, devuelve 0 (FALSE).

Con mysqli_select_db() PHP le hemos dicho al servidor que en la conexin $link nos queremos conectar a la base de datos
indicada.

La siguiente funcin mysqli_query(), usando el identificador de la conexin ($link), enva una instruccin SQL al servidor MySQL
para que ste la procese. El resultado de sta operacin es almacenado en la variable $result.

Finalmente, elegimos la fila de resultados cero con mysqli_data_seek ($result, 0); y guardamos los resultados de esa fila en un

array con $extraido= mysqli_fetch_array($result); . Si quisiramos mostrar los siguientes registros tendramos que incluir
instrucciones con los nmeros 1, 2,

La sentencia mysqli_free_result($result); libera la conexin establecida con la base de datos.

La sentencia mysqli_close($link); cierra la conexin con la base de datos.

http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=612:php-consultas-mysql-
mysqliconnect-selectdb-query-fetcharray-freeresult-close-ejemplos-cu00841b&catid=70:tutorial-basico-programador-web-php-
desde-cero&Itemid=193

FUNCIONES DE MYSQL

mysql_affected_rows Obtiene el nmero de filas afectadas en la anterior operacin de MySQL


mysql_client_encoding Devuelve el nombre del conjunto de caracteres
mysql_close Cierra una conexin de MySQL
mysql_connect Abre una conexin al servidor MySQL
mysql_create_db Crea una base de datos MySQL
mysql_data_seek Mueve el puntero de resultados interno
mysql_db_name Recupera el nombre de la base de datos desde una llamada a mysql_list_dbs
mysql_db_query Selecciona una base de datos y ejecuta una consulta sobre la misma
mysql_drop_db Elimina (DROP) una base de datos MySQL
mysql_errno Devuelve el valor numrico del mensaje de error de la ltima operacin MySQL
mysql_error Devuelve el texto del mensaje de error de la operacin MySQL anterior
mysql_escape_string Escapa una cadena para ser usada en mysql_query
mysql_fetch_array Recupera una fila de resultados como un array asociativo, un array numrico o
como ambos
mysql_fetch_assoc Recupera una fila de resultados como un array asociativo
mysql_fetch_field Obtiene la informacin de una columna de un resultado y la devuelve como un objeto
mysql_fetch_lengths Obtiene la longitud de cada salida en un resultado
mysql_fetch_object Recupera una fila de resultados como un objeto
mysql_fetch_row Obtiene una fila de resultados como un array numrico
mysql_field_flags Obtiene las banderas asociadas al campo especificado de un resultado
mysql_field_len Devuelve la longitud del campo especificado
mysql_field_name Obtiene el nombre del campo especificado de un resultado
mysql_field_seek Establece el puntero del resultado en un ndice de campo especficado
mysql_field_table Obtiene el nombre de la tabla en la que est el campo especificado
mysql_field_type Obtiene el tipo del campo especificado de un resultado
mysql_free_result Libera la memoria del resultado
mysql_get_client_info Obtiene informacin del cliente MySQL
mysql_get_host_info Obtener informacin del anfitrin de MySQL
mysql_get_proto_info Obtener informacin del protocolo MySQL
mysql_get_server_info Obtiene informacin del servidor MySQL
mysql_info Obtiene informacin sobre la consulta ms reciente
mysql_insert_id Obtiene el ID generado en la ltima consulta
mysql_list_dbs Lista las bases de datos disponibles en un servidor MySQL
mysql_list_fields Lista los campos de una tabla de MySQL
mysql_list_processes Lista los procesos de MySQL
mysql_list_tables Lista las tablas de una base de datos MySQL
mysql_num_fields Obtiene el nmero de campos de un resultado
mysql_num_rows Obtener el nmero de filas de un conjunto de resultados
mysql_pconnect Abre una conexin persistente a un servidor MySQL
mysql_ping Efectuar un chequeo de respuesta (ping) sobre una conexin al servidor o reconectarse si
no hay conexin
mysql_query Enviar una consulta MySQL
mysql_real_escape_string Escapa caracteres especiales en un string para su uso en una sentencia
SQL
mysql_result Obtener datos de resultado
mysql_select_db Seleccionar una base de datos MySQL
mysql_set_charset Establece el conjunto de caracteres del cliente
mysql_stat Obtiene el estado actual del sistema
mysql_tablename Obtiene el nombre de la tabla de un campo
mysql_thread_id Devuelve el ID del hilo actual
mysql_unbuffered_query Enva una consulta SQL a MySQL, sin recuperar ni almacenar en bfer las
filas de resultados
http://php.net/manual/es/ref.mysql.php

LECTURA DE LOS DATOS CONTENIDOS EN UNA BASE DE


DATOS

As el cdigo ser el siguiente:


<html>
<head>
<TITLE>Muestra los resultados de una consulta MySQL.</TITLE>
</head>

<body>
<div align='center'>
<table border='1' cellpadding='0' cellspacing='0' width='600' bgcolor='#F6F6F6' bo
rdercolor='#FFFFFF'>
<tr>
<td width='150' style='font-weight: bold'>ID</td>
<td width='150' style='font-weight: bold'>NOMBRE</td>
<td width='150' style='font-weight: bold'>E-MAIL.</td>
<td width='150' style='font-weight: bold'></td>
</tr>
<?php
include('abre_conexion.php');

$query = "select * from $tabla_db1"; // Esta linea hace la consulta


$result = mysql_query($query);

while ($registro = mysql_fetch_array($result)){


echo "
<tr>
<td width='150'>".$registro['id']."</td>
<td width='150'>".$registro['nombre']."</td>
<td width='150'>".$registro['email']."</td>
<td width='150'></td>

</tr>
";
}
include('cierra_conexion.php');
?>
</table>
</div>
</body>

</html>

http://www.uterra.com/base_datos_mysql/codigo_mysql.php?ref=lectura_de_una_base_de_datos

Consultar datos en MySQL


Extrayendo datos de MySQL
Para extraer datos utilizaremos la funcin mysql_query mediante la cual enviamos un consulta SQL. Entonce
primero incluimos el archivo para crear la conexin e inmediatamente creamos la consulta para extraer todos
los datos de las empresas en nuestra base de datos.

// incluimos la conexin

require("conexion.php");
// creamos la consulta

$query = "SELECT * FROM empresa ORDER BY nombre ASC";

// enviamos la consulta a MySQL

$queEmp = mysql_query($query, $conexion);

Tambin se puede agregar una sentencia para mostrar si hay algn error en la conexin o consulta.

require("conexion.php");

$query = "SELECT * FROM empresa ORDER BY nombre ASC";

$queEmp = mysql_query($query, $conexion) or die(mysql_error());

Mostrando los Datos


El siguiente paso es mostrar los datos extrados en la consulta, para ello podemos
utilizarmysql_fetch_assoc el cual devolver un array asociativo con el siguiente registro devuelto por la
consulta. Entonces para mostrar todos los registros devueltos por la consulta se tendra:

while ($resEmp = mysql_fetch_assoc($queEmp)) {

echo $resEmp['nombre']."<br>";

Donde se puede ver que para acceder a cada campo del registro lo hacemos como un array donde le
pasamos el nombre del campo que deseamos acceder (En el ejemplo estamos mostrando todos los
nombres de las empresas consultadas).

Ahora, solo depende como deseamos mostrar los datos para modificar nuestro script. Por ejemplo si
deseamos mostrar los datos como una lista tendramos

<ul>

<?php while ($rsEmp = mysql_fetch_assoc($quEmp)) { ?>

<li><?php echo $rsEmp['nombre']; ?></li>

<?php } ?>

</ul>

Ahora tambin podramos mostrar los resultados en una tabla o datagrid, para ello modificamos nuestro
cdigo donde utilizaremos una tabla para mostrar en varias columnas los datos consultados.

<table>

<tr>

<th>Nombre</th>

<th>Direccin</th>

<th>Telfono</th>

</tr>
<?php while ($rsEmp = mysql_fetch_assoc($quEmp)) { ?>

<tr>

<td><?php echo $rsEmp['nombre']; ?></td>

<td><?php echo $rsEmp['direccion']; ?></td>

<td><?php echo $rsEmp['telefono']; ?></td>

</tr>

<?php } ?>

</table>

Crear un Buscador

Ahora, podramos crear un buscador bsico de empresas, para ello creamos un formulario para ingresar el
criterio de bsqueda.

<form id="frbuscar" method="get" action="">

<input name="criterio" id="criterio" type="text" />

<input type="submit" id="btbuscar" value="Buscar" />

</form>

Antes de continuar decidimos el tipo de consulta SQL que vamos a utilizar, en nuestro caso la bsqueda
ser por las primeras letras del nombre, para ello utilizaremos la sentencia LIKE explicada en el artculo PHP
con MySQL: Introduccin a SQL.

SELECT * FROM empresa WHERE nombre LIKE 'A%'

Luego, una vez enviado el formulario procedemos a recuperar los datos para proceder a crear la consulta y
enviarla a MySQL. Primero verificamos que se ha enviado un criterio de bsqueda luego creamos la
consulta no sin antes normalizar los datos (para prevenir ataques de inyeccin SQL), esto lo hacemos con la
funcin sqlValue que hemos creado en PHP con MySQL: Insertar datos en MySQL.

require("conexion.php");

require("funciones.php");

$criterio = getParam($_GET["criterio"], "");

$total = 0;

if ($criterio != "") {

$slike = sqlValue($criterio."%", "text");

$query = "SELECT * FROM empresa WHERE nombre like ".$slike." ORDER BY nombre
ASC";

$queEmp = mysql_query($query, $conexion);


$total = mysql_num_rows($queEmp);

Ntese que estamos utilizando una variable $total donde se almacena el total de resultados devueltos por la
consulta. El total de resultados se obtiene con la funcin mysql_num_rows.

Finalmente mostramos los resultados al cliente, para ello verificamos que existan resultados en la consulta.
Uniendo todos los elementos tendramos:

<?php

require("conexion.php");

require("funciones.php");

$criterio = getParam($_GET["criterio"], "");

$total = 0;

if ($criterio != "") {

$slike = sqlValue($criterio."%", "text");

$query = "SELECT * FROM empresa WHERE nombre like ".$slike." ORDER BY nombre
ASC";

$queEmp = mysql_query($query, $conexion);

$total = mysql_num_rows($queEmp);

?>

<html>

<head>

<title>Consultar datos en MySQL</title>

</head>

<body>

<h3>Buscador de Empresas</h3>

<form id="frbuscar" method="get" action="">

<input name="criterio" id="criterio" type="text" />

<input type="submit" id="btbuscar" value="Buscar" />

</form>

<?php if ($total > 0) { ?>


<em>Total de Resultados: <?php echo $total; ?></em>

<table>

<tr>

<th>Nombre</th>

<th>Direccin</th>

<th>Telfono</th>

</tr>

<?php while ($rsEmp = mysql_fetch_assoc($quEmp)) { ?>

<tr>

<td><?php echo $rsEmp['nombre']; ?></td>

<td><?php echo $rsEmp['direccion']; ?></td>

<td><?php echo $rsEmp['telefono']; ?></td>

</tr>

<?php } ?>

</table>

<?php } ?>

<p>&nbsp;</p>

</body>

</html>

Como pueden ver no es complicado hacer consultas a MySQL, solo debemos crear la cadena con la
consulta SQL y luego enviarla utilizando la funcin mysql_query. Lo siguiente solo depende de como
deseamos mostrar la informacin resultante de nuestra consulta.

COMO MOSTRAR LOS REGISTROS DE LOS APLICATIVOS

<?php
$conexion = mysql_connect("localhost", "root", "");
mysql_select_db("precios", $conexion);

$registros = mysql_query("select * from preciohospedajes", $conexion);

while ($fila = mysql_fetch_array($registros)){


echo $fila["nombre"];
echo $fila["precio1"];
echo $fila["precio2"];
echo $fila["precio3"];
echo $fila["precio4"];
}
?>
Acceso a la base de datos desde PHP
Desde PHP se puede acceder fcilmente a una base de datos en MySQL empleando las ms
de 50 funciones que existen. Las principales funciones que se emplean para acceder a una
base de datos son:

mysql_connect(servidorBD, usuario, contrasea) : abre una conexin con un servidor de bases de


datos de MySQL, devuelve un identificador que se emplea en algunas de las siguientes funciones
o FALSE en caso de error.
mysql_close(identificador) : cierra una conexin con un servidor de MySQL, devuelve TRUE en
caso de xito y FALSE en caso contrario.
mysql_ping(identificador) : verifica que la conexin con el servidor de bases de datos funciona,
devuelve TRUE en caso de xito y FALSE en caso contrario.
mysql_select_db(nombreBD, identificador) : selecciona una base de datos, devuelve TRUE en caso
de xito y FALSE en caso contrario.
mysql_query(sentencia, identificador) : ejecuta una sentencia SQL y devuelve un resultado
( SELECT, SHOW, EXPLAIN o DESCRIBE , ...) o TRUE ( INSERT, UPDATE, DELETE , ...) si todo es correcto,
o FALSE en caso contrario.
mysql_fecth_array(resultado) : recorre un resultado, devuelve un array que representa una fila
(registro) o FALSE en caso de error (por ejemplo, llegar al final del resultado); al array se puede
acceder de forma numrica (posicin de la columna) o asociativa (nombre de la columna).
mysql_fetch_assoc(resultado) y mysql_fetch_row(resultado) : ambas funciones son similares a la
anterior mysql_fecth_array(resultado) , pero slo permiten el acceso como array asociativo o con
ndices numricos respectivamente.
mysql_affected_rows(identificador) : devuelve el nmero de filas (tuplas) afectadas por la ltima
operacin si fue del tipo INSERT, UPDATE , etc., que no devuelven un resultado.
mysql_num_rows(resultado) : devuelve el nmero de filas (tuplas) afectadas por la ltima operacin si
fue del tipo SELECT .
mysql_free_result(resultado) : libera la memoria ocupada por un resultado; en principio, se libera
automticamente al finalizar la pgina, es necesario si en una misma pgina se realizan varias
consultas con resultados muy grandes.

El siguiente ejemplo muestra como visualizar todo el contenido de una tabla en una pgina
web. En concreto, se conecta al servidor local con el usuario wwwdata sin contrasea,
selecciona la base de datos biblioteca, recupera todo el contenido de la tabla libros y muestra
los campos Titulo y Resumen :
<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Prueba de SELECT y MySQL</title>

</head>

<body>

<?php

// Se conecta al SGBD

if(!($iden = mysql_connect("localhost", "wwwdata", "")))


die("Error: No se pudo conectar");

// Selecciona la base de datos

if(!mysql_select_db("biblioteca", $iden))

die("Error: No existe la base de datos");

// Sentencia SQL: muestra todo el contenido de la tabla "books"

$sentencia = "SELECT * FROM libros";

// Ejecuta la sentencia SQL

$resultado = mysql_query($sentencia, $iden);

if(!$resultado)

die("Error: no se pudo realizar la consulta");

echo '<table>';

while($fila = mysql_fetch_assoc($resultado))

echo '<tr>';

echo '<td>' . $fila['Titulo'] . '</td><td>' . $fila['Resumen'] . '</td>';

echo '</tr>';

echo '</table>';

// Libera la memoria del resultado

mysql_free_result($resultado);

// Cierra la conexin con la base de datos

mysql_close($iden);

?>

</body>

</html>

El siguiente ejemplo es similar al anterior, pero emplea una funcin llamada sql_dump_result(resultado) que
visualiza todo el contenido del resultado de una consulta SELECT en forma de tabla de HTML, sin tener que
indicar uno a uno los campos que componen el resultado; adems, la primera fila de la tabla creada contiene los
nombres de los campos a modo de encabezados de las columnas de la tabla:

<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Prueba de SELECT y MySQL</title>

</head>

<body>

<?php

// Devuelve todas las filas de una consulta a una tabla de una base de datos

// en forma de tabla de HTML

function sql_dump_result($result)

$line = '';

$head = '';

while($temp = mysql_fetch_assoc($result))

if(empty($head))

$keys = array_keys($temp);

$head = '<tr><th>' . implode('</th><th>', $keys). '</th></tr>';

$line .= '<tr><td>' . implode('</td><td>', $temp). '</td></tr>';

return '<table>' . $head . $line . '</table>';

// Se conecta al SGBD

if(!($iden = mysql_connect("localhost", "wwwdata", "")))

die("Error: No se pudo conectar");

// Selecciona la base de datos

if(!mysql_select_db("biblioteca", $iden))

die("Error: No existe la base de datos");

// Sentencia SQL: muestra todo el contenido de la tabla "books"

$sentencia = "SELECT * FROM libros";

// Ejecuta la sentencia SQL

$resultado = mysql_query($sentencia, $iden);

if(!$resultado)
die("Error: no se pudo realizar la consulta");

// Muestra el contenido de la tabla como una tabla HTML

echo sql_dump_result($resultado);

// Libera la memoria del resultado

mysql_free_result($resultado);

// Cierra la conexin con la base de datos

mysql_close($iden);

?>

</body>

</html>