0% encontró este documento útil (0 votos)
91 vistas

MANUAL MySQL Desde PHP

Este documento explica cómo conectarse a una base de datos MySQL desde PHP y mostrar los datos de una consulta. Primero se establece la conexión a la base de datos, luego se ejecuta una consulta SQL para obtener los datos y finalmente se muestran los resultados utilizando funciones como mysql_fetch_row(). También describe cómo crear una base de datos y tablas en MySQL utilizando línea de comandos o scripts PHP.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
91 vistas

MANUAL MySQL Desde PHP

Este documento explica cómo conectarse a una base de datos MySQL desde PHP y mostrar los datos de una consulta. Primero se establece la conexión a la base de datos, luego se ejecuta una consulta SQL para obtener los datos y finalmente se muestran los resultados utilizando funciones como mysql_fetch_row(). También describe cómo crear una base de datos y tablas en MySQL utilizando línea de comandos o scripts PHP.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

Conectar a MySQL desde PHP

Ya tenemos datos en nuestra Base de Datos (BD), así que con el siguiente script nos
conectaremos a la BD del servidor MySQL para obtener los datos de un registro.

Conexión a MySQL

<html>
<body>
<?php
$linkp>
<?php
$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT * FROM agenda", $link);
echo "Nombre: ".mysql_result($result, 0, "nombre")."<br>";
echo "Dirección: ".mysql_result($result, 0, "direccion")."<br>";
echo "Teléfono :".mysql_result($result, 0, "telefono")."<br>";
echo "E-Mail :".mysql_result($result, 0, "email")."<br>";
?>
</body>
</html>

En la primera línea del script nos encontramos con la función mysql_connect(), que abre
una conexión con el servidor MySQL en el Host especificado (en este caso la misma
máquina en la que está alojada el servidor MySQL, localhost). También debemos
especificar un usuario (nobody, root, etc. ), y si fuera necesario un password para el usuario
indicado (mysql_connect("localhost", "root", "clave_del_root")). Si la conexión ha tenido
éxito, la función mysql_connect() devuelve un identificar de dicha conexión (un número) que
es almacenado en la variable $link, sino ha tenido éxito, devuelve 0 (FALSE).

Con mysql_select_db() PHP le dice al servidor que en la conexión $link nos queremos
conectar a la base de datos mydb. Podríamos establecer distintas conexiones a la BD en
diferentes servidores, pero nos conformaremos con una.

La siguiente función mysql_query(), es la que hace el trabajo duro, usando el identificador


de la conexión ($link), envía una instrucción SQL al servidor MySQL para que éste la
procese. El resultado de ésta operación es almacenado en la variable $result.

Finalmente, mysql_result() es usado para mostrar los valores de los campos devueltos por
la consulta ($result). En este ejemplo mostramos los valores del registro 0, que es el primer
registro 0, que es el primer registro, y mostramos el valor de los campos especificados.

Creación de una Base de Datos en MySQL

Antes de seguir con PHP, vamos a preparar la base de datos (BD) que vamos a utilizar como
ejemplo. Como servidor de BD, usaremos MySQL un pequeño y compacto servidor de BD,
ideal para pequeñas y medianas aplicaciones. MySQL soporta el estándar SQL (ANSI), y
además está disponible para distintas plataformas, incluido las "windows"disponible para
distintas plataformas, incluido las "windows".

Una vez instalado MySQL, vamos a crear nuestra BD ejemplo. MySQL utiliza una tabla de
permisos de usuarios, por defecto, en la instalación crea el usuario root sin password. Debes
crear distintos usuarios con distintos permisos. Entre ellos, el usuario administrador de
MySQL, con todos los permisos, y como recomendación de seguridad, el usuario nobody
sólo con el permiso de consultar (SELECT), que es el que utilizaremos para conectarnos al
servidor de BD en nuestros script.

Vamos a ver dos formas de crear una base de datos y sus tablas. Para ello vamos a crear la
base de datos que nos servirá de ejemplo en capitulos siguientes:

1. Linea de comandos

Para crear nuestra base de datos en sistemas Linux/Unix, debemos ser el administrador de
MySQL o tener el permiso pertinente para crear bases de datos, para ello haremos lo
siguiente:

mysqladmin create mydb

Ya hemos creado una BD, ahora le añadiremos una tabla y algunos registros, para lo cual
copia el siguiente texto y sálvalo en un archivo, que podríamos llamar mydb.dump.

Crear tabla mybd

CREATE TABLE agenda (id INT NOT NULL AUTO_INCREMENT, nombre


CHAR(50),direccion CHAR(100), telefono CHAR(15), email CHAR(50), KEY (id) )\g
INSERT INTO agenda VALUES (0, 'Juan Pérez', 'C/ Laguna, 15. Sevilla', '95.455.55.55',
'[email protected]' )\g
INSERT INTO agenda VALUES (1, 'Luis García', 'C/ Betis, 22. Cádiz', '95.655.66.33',
'[email protected]' )\g
INSERT INTO agenda VALUES (2, 'Carlos Rodríguez', 'C/ Sevilla, 6. Huelva',
'95.113.22.77', '[email protected]' )\g

Debemos tener en cuenta que los comandos de arriba debe escribirse cada uno en una sola
línea. Se han separado para aumentar la legibilidad del código.

Ahora desde la línea de comandos ejecuta:

cat mydb.dump | mysql mydb

Cabe destacar el campo id, que no puede estar vacío, y además es autoincrementable, lo
cuál deberemos tener en cuenta a la hora de actualizar y añadir registros. Si no hemos
cometido ningún error, ya tenemos nuestra base de datos de ejemplo en el servidor MySQL.
MySQL.
2. Script

Una seguna forma de crear las bases de datos y tablas es utilizar las funciones que para ello
nos da PHP. Para crear una base de datos tenemos dos opciones, una utilizar la función
mysql_create_db(), o bien enviado una consulta SQL con la intrucción "CREATE
DATABASE mydb". Como ejemplo vamos a crear un script crear_my.php que creará la
anterio base de datos.

<html> <body>
<?PHP define ("CONSTANTE", "Hola Mundo"); printf (CONSTANTE); ?>
</body> </html>
$basedatos = "mydb";
//conectamos con el servidor
$link = @mysql_connect("localhost", "root", "");
// comprobamos que hemos estabecido conexión en el servidor
if (! $link){
echo "<h2 align='center'>ERROR: Imposible establecer conección con el
servidor</h2>";
exit;
}
// obtenemos una lista de las bases de datos del servidor
$db = mysql_list_dbs();
// vemos cuantas BD hay
$num_bd = mysql_num_rows($db);
//comprobamos si la BD que quermos crear exite ya
$existe = "NO" ;
for ($i=0; $i<$num_bd; $i++) {
if (mysql_dbname($db, $i) == $basedatos) {
$existe = "SI" ;
break;
}
}
// si no existe la creamos
if ($existe == "NO") {
/* manera 1 */
if (! mysql_create_db($basedatos, $link)) {
echo "<h2 align='center'>ERROR 1: Imposible crear base de datos</h2>";
exit;
}
/* class="codigo" style="margin-left: 50"> /* manera 2
if (! mysql_query("CREATE DATABASE $basedatos", $link)){
echo "<h2 align='center'>ERROR2: Imposible crear base de datos</h2>";
exit;
} */
}
// craamos la tabla
$sql = "CREATE TABLE agenda (";
$sql .= "id INT NOT NULL AUTO_INCREMENT, ";
$sql .= "nombre CHAR(50), ";
$sql .= "direccion CHAR(100), ";
$sql .= "telefono CHAR(15), ";
$sql .= "email CHAR(50), ";
$sql .= "KEY (id) ) ";
if (@mysql_db_query($basedatos, $sql, $link)) {
echo "<h2 align='center'>La tabla se ha creado con éxito</h2>";
} else {
echo "<h2 align='center'>No se ha podido crear la tabla</h2>";
}
?>
</body> </html>

Importar bases de datos desde MS Access

Un caso muy común, como en mi caso, al comenzar a utilizar MySQL, necesitaba migrar mis
bases de datos Access de mi sistemas Windows a MySQL en Linux. La solución a este
problema, nos la aporta un módulo creado por Pedro Freire de CYNERGI.

Los pasos que debemos seguir para instalar este módulo, y su posterior uso son:

1. Abre el archivo de Access .mdb que deseas exportar.


2. En la ventana de objetos de la BD selecciona "Módulos", y después en "Nuevo".
3. Entonces se te abrirá una ventana nueva, borra todo texto (código) que haya escrito.
4. Copia todo el texto del archivo de Pedro Freire y pégalo en el nuevo módulo.
5. Cierra la ventana de código del módulo, selecciona que "Sí" desea guardar los cambios
y nombra el módulo (p.e. "MexportSQL"). El módulo es ahora parte de tu base de
datos Access.
6. Vuelve a abrir el módulo, o pincha con el ratón en "Diseño" con nuestro nuevo módulo
seleccionado. Mueve el cursor hasta donde aparezca la primera palabra "Function", y
presiona F5 o selecciona "Ejecutar" en el menú.

La ejecución del módulo nos creará dos archivos (esql_add.txt y esql_del.txt) en el directorio
C:/temp (el que trae por defecto, pero lo podemos cambiar). A nosotros el archivo que nos
interesa es esql_add.txt, el cuál como mejor nos parezca deberemos llevárnoslo a nuestra
máquinaezca deberemos llevárnoslo a nuestra máquina Linux.

Ahora solo tenemos que seguir los paso que explicamos en el capítulo anterior (Comenzando
con MySQL). Primero creamos la base de datos:

mysqladmin create mybd

Y después volcamos los datos y en la nueva base de datos:

cat esql_add.txt | mysql mybd

Mostrar los datos de una consulta

Mostrar los datos de una consulta


Ahora que ya sabemos conectar con el servidor de BD, veremos como mostrar los datos por
pantalla.

Consulta de la BD

<html>
<body>
<?php
$link = mysql_connect("localhost", "nobody"odigo">$link = mysql_connect("localhost",
"nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);
echo "<table border = '1'> \n";
echo "<tr> \n";
echo "<td><b>Nombre</b></td> \n";
echo "<td><b>E-Mail</b></td> \n";
echo "</tr> \n";
while ($row = mysql_fetch_row($result)){
echo "<tr> \n";
echo "<td>$row[0]</td> \n";
echo "<td>$row[1]</td> \n";
echo "</tr> \n";
}
echo "</table> \n";
?>
</body>
</html>

En este script hemos introducido dos novedades, la más obvia es la sentencia de control
while(), que tiene un funcionamiento similar al de otros lenguajes, ejecuta una cosa mientras
la condición sea verdadera. En esta ocasión while() evalúa la función mysql_fetch_row(), que
devuelve un array con el contenido del registro actual (que se almacena en $row) y avanza
una posición en la lista de registros devueltos en la consulta SQL.

La función mysql_fetch_row() tiene un pequeño problema, es que el array que devuelve


sólo admite referencias numéricas a los campos obtenidos de la consulta. El primer campo
referenciado es el 0, el segundo el 1 y así sucesivamente. En el siguiente script
solucionaremos este pequeño inconveniente.

Consulta modificada de BD

<html>
<body>
<?php
$link = mysql_connect("localhost", "nobody&ost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
echo "<tr> \n";
echo "<td><b>Nombre</b></td> \n";
echo "<td><b>E-Mail</b></td> \n";
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["nombre"]."</td> \n";
echo "<td>".$row["email"]."</td>\n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> style="margin-left: 50">echo "</table> \n";
} else {
echo "¡ La base de datos está vacia !";
}
?>
</body>
</html>

Esencialmente, este script hace lo mismo que el anterior. Almacenamos en $row el registro
actual con la función mysql_fetch_array() que hace exactamente lo mismo que
mysql_fetch_row(), con la excepción que podemos referenciar a los campos por su nombre
($row["email"]), en vez de por un número.

Con la sentencia if/else, asignamos a $row el primer registro de la consulta, y en caso de no


haber ninguno (else) mostramos un mensaje ("No se ha encontrado..."). Mientras que con la
sentencia do/while, nos aseguramos que se nos muestren todos los registros devueltos por
la consulta en caso de haber más de uno.

Hay que destacar la utilización del punto (.), como operador para concatenar cadenas.

Un buscador para nuestra base de datos

Vamos a ver una aplicación, un ejemplo, de todo lo visto hasta ahora. Escribiremos un script
que sirva para buscar una determinada cadena (que recibiremos de un formulario, y la
almacenamos en la variable $buscar), dentro de nuestra base de datos, concretamente
dentro del campo "nombre".

campo "nombre".

En primer lugar escribiremos el texto HTML de la página web que nos servirá como
formulario de entrada, la llamaremos formulario.htm.

Formulario entrada

<html>
<body>
<form method = "POST" action = "http://mysevidor/php/buscador.php3">
<strong>Palabra clave:</strong>
<input type="text" name="buscar" size="20"><br><br>
<input type="submit" value="Buscar">
</form>
</body>
</html>
El siguiente script de busqueda lo llamaremos buscador.php3, y será el encargado de hacer
la búsqueda en la BD, y devolver por pantalla los registros encontrados.
Script búsqueda
<html>
<body>
<?php
if (!isset($buscar)){
echo "Debe especificar una cadena a buscar";
echo &quo
echo "<p>Debe especificar una cadena a buscar</p> \n"; echo "<p><a
href=buscador_bd.htm>Volver</p> \n";
echo "</html></body> \n";
exit;
}
$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$sql = "SELECT * FROM agenda WHERE nombre LIKE '%$buscar%' ORDER BY
nombre";
$result = mysql_query($sql, $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
//Mostramos los nombres de las tablas
echo "<tr> \ndigo" style="margin-left: 50">echo "<tr> \n";
mysql_field_seek($result,0);
while ($field = mysql_fetch_field($result)){
echo "<td><b>$field->name</b></td> \n";
}
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["id"]."</td> \n";
echo "<td>".$row["nombre"]."</td> \n";
echo "<td>".$row["direccion"]."</td> \n";
echo "<td>".$row["telefono"]."</td> \n";
echo "<td><a
href='mailto:"
href='mailto:".$row["email"]."'>".
$row["email"]."</a></td> \n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "<p><a href=buscador_bd.htm>Volver</p> \n";
echo "</table> \n";
} else {
echo "<p>¡No se ha encontrado ningún registro!</p>\n";
echo "<p><a href=buscador_bd.htm>Volver</p> \n";
?>
</body>
</html>

Lo primero que comprobamos es que el contenido de la variable $buscar que recibimos del
la página web formulario.htm no es una cadena vacia, y esto lo hacemos con la función
isset() que devuelve 'falso' si la variable que recibe está vacia. A la función le anteponemos
el signo admiración (!) que es equivalente a un NOT, para convertirlo en 'verdadero' en
caso de que la variable esté vacia, y en es caso terminamos la ejecución del script con exit.

Lo más importante de este script, es sin duda la sentencia SQL que le enviamos al servidor
MySQL, y más concretamente la condición que le imponemos, WHERE nombre LIKE '%
$buscar%'. Con la sentencia LIKE buscamos cualquier ocurrencia de la cadena contenida
en $buscar, mientras que con los signos de porcentaje (%) indicamos el lugar de la
coincidencia, por ejemplo, si hubiesemos puesto nombre LIKE '%$buscar', buscariamos
cualquier ocurrencia al final del campo"nombre", mientras que si hubiesemos puesto
nombre LIKE '$buscar%', buscariamos cualquier ocurrencia al principio del campo
"nombre".

Las últimas novedade que hemos incorporado, son las funciónes mysql_fetch_field(), con el
que obtenemos información acerca de las caracteríticas de cada campo, como su nombre,
tipo, longitud, nombre de la tabla que los contiene, etc. Pero para ejecutar la función anterior
debemos colocar el puntero en el primer campo, y eso lo logramos con la función
mysql_field_seek(), la cál mueve el puntero interno a la posición indicada.

Añadir registros

En esta lección vamos ver como podemos añadir nuevos registros a nuesta BD. La recogida
de datos la vamos a hacer a traves de un interfaz de web. En primer lugar vamos a crear una
página web con un simple formulario, con los campos que deseamos.

Formulario inicial añadir BD

<html>
<body>
<form method="poodigo"><body>
<form method="post" action="add_reg.php3">
Nombre :<input type="Text" name="nombre"><br>
Dirección:<input type="Text" name="direccion"><br>
Teléfono :<input type="Text" name="telefono"><br>
E-mail :<input type="Text" name="email"><br>
<input type="Submit" name="enviar" value="Aceptar información">
</form>
</body>
</html>

Hemos creado un formulario donde recoger los datos, y una vez introducidos ejecutamos un
script llamado add_reg.php3, pues veamos como es este script.
Añadir registros

<html>
<body>
<?php
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "INSERT INTO agenda (nombre, direccion, telefono, emT INTO agenda (nombre,
direccion, telefono, email) ";
$sql .= "VALUES ('$nombre', '$direccion', '$telefono', '$email')";
$result = mysql_query($sql);
echo "¡Gracias! Hemos recibido sus datos.\n";
</body>
</html>

Como se puede ver, para introducir un nuevo registro, utilizamos la ya conocida función
mysql_query(), la cúal también usamos para las consultas, y usaremos para las
actualizaciones, es decir una señora función. ¡Aaah!, una cosa muy importante, para poder
añadir o modificar registros debemos tener permiso para ello en el servidor MySQL, por eso
en este caso me conecto como root, pero podría ser cualquier otro usuario.

Para terminar esta lección, una pequeña frivolidad, vamos a combinar la página web de
formulario y el fichero de script php3, en un solo fichero que llamaremos add_reg.php3 (este
script no lo comentaré, !algo tendran que hacer ustedes¡o tendran que hacer ustedes¡).

Combinacion de formulario y script

<html>
<body>
<?php
if ($enviar) {
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "INSERT INTO agenda (nombre, direccion, telefono, email) ";
$sql .= "VALUES ('$nombre', '$direccion', '$telefono', '$email')";
$result = mysql_query($sql);
echo "¡Gracias! Hemos recibido sus datos.\n";
}else{
?>
<form method="post" action="add_reg.php3">
Nombre :<input type="Text" name="nombre"><br>
Dirección:<input type="Text&quo>Dirección:<input type="Text"
name="direccion"><br>
Teléfono :<input type="Text" name="telefono"><br>
E-mail :<input type="Text" name="email"><br>
<input type="Submit" name="enviar" value="Aceptar información">
</form>
<?php
} //end if
?>
</body>
</html>

También podría gustarte