Está en la página 1de 18

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

INTRODUCCIN A LAS BASES DE DATOS PALABRA Para poder disfrutar de tu base de datos MySql en i (espaa), es necesario que contrates antes nuestro albergamiento Plus (o nuestro pack Plus), una oferta que adems te permitir alojar tu sitio sin publicidad y disfrutar de ms ventajas. Para ms informacin:

PALABRA :

Submit Query

http://www.iespana.es/heberg/accueil Una vez contratado tu albergue, dentro de "mi sitio" encontrars el enlace para activar tu base de datos MySql, que crear tambin una carpeta "iphp" a la raz de tu sitio: es all donde debers colocar todos los ficheros que conectarn con la base. Pero qu es una base de datos? Lo que popularmente se conoce como Bases de datos SQL se refiere realmente al trmino "Sistema gestor de bases de datos (SGBD)". Sistemas gestores de bases de datos hay muchos, en nuestro caso estudiaremos aquellos que se caracterizan por usar el lenguaje SQL (Standard Query Language) como interfaz, un lenguaje que nos permitir comunicarnos fcilmente y de forma estructurada con el SGBD. Volviendo al trmino prctico, un Sistema Gestor de Bases de Datos contiene una o ms Bases de Datos (BD). Una base de datos contiene una o ms tablas, stas contienen registros que sern uno o ms campos. El concepto es bastante sencillo: Un campo puede ser : Nombre, por ejemplo. Un registro ser un conjunto de campos: Nombre, Apellidos, Direccin, Telfono,... Una tabla ser un conjunto de registros (con contenidos):

Nombre Paco Octavio ..

Apellidos Perez Garca Sanchez Menendez ..

Direccin C/ Avila C/ Princesa ..

Telfono 555 55 55 123 45 67 ..

Y una base de datos ser un conjunto de tablas (que pueden estar relacionadas entre ellas, aunque esto requiere mayor experiencia). SGBDs hay muchos en el mercado, los ms conocidos son on Oracle, Ms SQLServer, Sybase, etc. (stas son de pago). Pero tambin son muy conocidas las bases de datos MySQL, PostGreSQL, mSQL por su alto rendimiento y por su carcter "gratuito" o "semi-gratuito". Este tutorial est orientado a MySQL, aunque para el resto es similar. Todas las bases de datos antes expuestas se cacterizan por soportar SQL, un lenguaje estandar que se define en el documento ANSI SQL92, aunque cada servidor utiliza modifica este estndar en funcin de sus necesidades. Respecto a MySQL recomendamos la documentacin disponible en:

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_1.htm (1 of 2) [09/12/02 11:05:32 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL


http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html

Envia esta pgina a un amigo

Blgica | Francia | Italia | Suiza | Quebec Contacto : tcnico | negocios | prensa | pub Copyright i (espaa) - una sociedad de

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_1.htm (2 of 2) [09/12/02 11:05:32 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

CONECTAR CON NUESTRA BASE DE DATOS PALABRA Una vez activada la base de datos, PHP dispone de una serie de funciones para conectar con ella. La funcin que debes usar para conectar es: int mysql_connect (string [hostname], string [username], string [password]) Hostname : el servidor, en nuestro caso: mysql1.opsion.fr Username : tu cuenta en i (espaa), aadiendo "db_" al principio y "_es" al final (por ejemplo: "db_iwebmaster_es") Password : la contrasea de tu sitio. Esta funcin nos retorna un "identificador de conexin". Es simplemente un identificador que ms tarde tendremos que reutilizar. Por ejemplo: <HTML> <HEAD> </HEAD> <BODY> <? $idconnect=mysql_connect("mysql1.opsion.fr", "db_iwebmaster_es", "password"); if ($idconnect==0) echo "Lo sentimos no se ha podido conectar con la base de datos."; else echo "Enhorabuena, se ha conectado con la base de datos."; mysql_close($idconnect); ?> </BODY> </HTML> if: el resultado de mysql_connect ser mayor de 0 si se ha conseguido conectar con la base de datos y 0 en caso contrario. mysql_close: mysql_close es una funcin que cierra el enlace con la base de datos que anteriormente se ha abierto. No es necesaria su invocacin, pues al finalizar el cdigo php, se cerrarn todas las conexiones. Sin embargo, s ser necesaria si deseamos realizar dos conexiones a bases de datos distintas en la misma pgina php; primero habr que cerrar la que tengamos abierta y luego volver a conectar. Ejecutar ejemplo.

PALABRA :

Submit Query

Envia esta pgina a un amigo

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_2.htm (1 of 2) [09/12/02 11:05:57 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

Blgica | Francia | Italia | Suiza | Quebec Contacto : tcnico | negocios | prensa | pub Copyright i (espaa) - una sociedad de

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_2.htm (2 of 2) [09/12/02 11:05:57 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

TRABAJAR CON LA BASE DE DATOS PALABRA Con la base de datos trabajaremos en SQL, es decir, con sentencias SQL. SQL tiene sentencias para casi todo, para crear una base de datos, crear una tabla, destruir una tabla, etc., pero eso lo haremos con el administrador phpMyAdmin que tammbin proporciona i (espaa).

PALABRA :

Submit Query

Lo que ms nos interesa de SQL es : 1 Como introducir datos. 2 Como extraer datos. 3 Como modificar datos. 4 Como eliminar datos. Estas operaciones las veremos ms tarde con algunos ejemplos. Otra pregunta llegado este momento es: si no conozco SQL, cmo hago esas operaciones con PHP. Es muy sencillo, con las funciones: int mysql_query (string query, int [link_identifier]); query: Peticin en sintaxis SQL (que veremos ms tarde). link_identifier: Identificador de conexin (lo que retorna mysql_connect). Esta funcin retornar un "identificador de resultado", un "resultado" al que luego podremos acceder. Este resultado ser mayor de 0 si la consulta ha sido satisfactoria y 0, si no ha sido satisfactoria (por ejemplo, si tenemos algn error en la sentencia SQL). El acceder al resultado de un mysql_query depender del tipo de consulta que hagamos (introducir datos, extraer datos, modificar datos eliminar datos). Por ejemplo, chequeador del n de registros de la base de datos: <HTML> <HEAD></HEAD> <BODY> <? $idconnect=mysql_connect("mysql1.opsion.fr", "db_iwebmaster_es", "password"); if ($idconnect==0) echo "Lo sentimos no se ha podido conectar con la base de datos."; else { mysql_select_db("db_iwebmaster_es",$idconnect); $idresult=mysql_query ("SELECT count(*) from usuarios;",$idconnect); if ($idresult==0) echo "La sentencia es incorrecta."; else { $nregistrostotal=mysql_result ($idresult,0,0);

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_3.htm (1 of 2) [09/12/02 11:06:09 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL


echo "Hay $nregistrostotal registros en la base de datos."; mysql_free_result($idresult); } } mysql_close($idconnect); ?> </BODY> </HTML> Ejecutar este ejemplo mysql_select_db: es una funcin que hay que invocar despus de cualquier mysql_connect, siempre que el resultado haya sido correcto. Esta funcin selecciona la base de datos que queremos utilizar, en nuestro caso coincide con nuestro nombre de cuenta en i (espaa), aadiendo "db_" al principio y seguido de "_es" (por ejemplo: "db_iwebmaster_es"). mysql_result: es una funcin que permite acceder a los resultados de una consulta SQL. En nuestro caso, "SELECT count(*) from usuarios;". Encontrars una explicacin ms detallada en la seccin de "Extraccin de datos de la base de datos".

Envia esta pgina a un amigo

Blgica | Francia | Italia | Suiza | Quebec Contacto : tcnico | negocios | prensa | pub Copyright i (espaa) - una sociedad de

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_3.htm (2 of 2) [09/12/02 11:06:09 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

INSERCIN DE DATOS EN LA BASE DE DATOS PALABRA La parte ms importante de este apartado es saber "qu campos tenemos o queremos insertar". Hay que tener en cuenta que aquellos campos que hayamos marcado como "not null" debern ser incluidos siempre. Para insertar datos se sigue siempre el mismo procedimiento, una sentencia SQL del tipo:
Submit Query

PALABRA :

INSERT INTO tabla (campo1,campo2,campo3,) VALUES ,valorcampo2 , valorcampo3, .);

(valorcampo1

Tabla: ser el nombre de la tabla donde queramos hacer la insercin de datos. Campo1,Campo2....: sern los nombres de los campos en los que insertaremos los registros. valorcampo1 ,valorcampo2...: sern los valores a insertar en los campos antes indicados (en el mismo orden). En nuestro ejemplo, si quisiramos insertar un registro, podramos utilizar: INSERT INTO usuarios (Nombre, Apellidos, Edad, DNI, Provincia) VALUES ("nombre", "apellidos usuario", 16, "99999999", "provincia"); Nota Importante: Las cadenas de texto o lo que se entiende por "VARCHAR" o "TEXT" deben de ir entre comillas. Los nmeros no tienen porque ir entre comillas. Nota Importante 2: Como norma general debes respetar las maysculas y minsculas en los nombres de los campos y tablas (con respecto al nombre de creacin). MySQL no distingue entre maysculas y minsculas, lo hace slamente en los nombres de los campos, no en los nombres de las tablas. Es decir, "usuarios" es diferente a "Usuarios" por ser una tabla, pero "nombre" es igual a "NOMBRE" por ser un campo. Esto no ocurre en todas las bases de datos, por ejemplo, en PostGreSQL nunca distingue entre maysculas y minsculas. Ejemplo: Como insertar datos desde un formulario. Supongamos el formulario: forminscribir.php: <FORM method="POST" action="insertar_41.php"> Nombre: <INPUT TYPE="text" name="Nombre"> Apellidos: <INPUT TYPE="text" name="Apellidos"> Edad: <INPUT TYPE="text" name="Edad"> DNI: <INPUT TYPE="text" name="DNI"> Provincia: <INPUT TYPE="text" name="Provincia"> <input type="submit"> </FORM> Y el cdigo: insertar_41.php :

<HTML> <HEAD></HEAD> <BODY> <? if ($Nombre=="" || $Apellidos=="" || $Edad==""

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_4.htm (1 of 3) [09/12/02 11:06:25 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL


|| $DNI=="" || $Provincia=="") { echo "Error, debes rellenar todos los campos."; } else { $idconnect=mysql_connect("mysql1.opsion.fr", "db_iwebmaster_es","password"); if ($idconnect==0) { echo "Lo sentimos no se ha podido "; echo "conectar con la base de datos."; } else { mysql_select_db("db_iwebmaster_es",$idconnect); $Peticion="INSERT INTO usuarios"; $Peticion.="(Nombre,Apellidos,Edad,DNI,Provincia)"; $Peticion.=" VALUES "; $Peticion.="(\"$Nombre\",\"$Apellidos\","; $Peticion.="$Edad,\"$DNI\",\"$Provincia\");"; $idresult=mysql_query ($Peticion, $idconnect); if ($idresult==0) { echo "La sentencia es incorrecta.<BR>"; echo mysql_errno().":".mysql_error()."<BR>"; } else { echo "El registro se ha insertado correctamente"; echo "en la base de datos."; } mysql_close($idconnect); } } ?> </BODY> </HTML> Ejecutar este ejemplo Aclaracin 1: El primer if comprueba si los datos variables que pretendemos insertar "existen", es decir, si no estn vacos. Pero, de dnde surgen las variables? Estas variables surgen del formulario que tenemos antes, donde en "action" se ha especificado "insert_41.php" y all sern enviadas las variables. Pero, qu variables? Cada <input type="XX" name="YY"> que has especificado en el formulario, aparecer como una variable en php llamada $YY. Entonces, puedo colocar el formulario en una pgina diferente a la de php? No slo puedes, sino que deberas (ya que har el cdigo ms legible). Lo nico que tendrs que hacer es poner correctamente en "action" un enlace a tu pgina php. Aclaracin 2: Qu significa \"? Como para colocar una cadena de texto en una sentencia SQL es necesario encerrarla entre comillas, debemos utilizar \" para que no se confunda con el fin de cadena de la sentencia. Otra alternativa es usar comillas simples: '. As, podemos tener: "INSERT INTO otratabla (campo1) VALUES ('valorcampo1');". Aclaracin 3: Se puede colocar una variable PHP dentro de una cadena , como: "$var "? Por supuesto. Por ejemplo: <? $var="hola"; $var2="$var,adios"; echo $var2;?> mostrara el resultado "hola, adios". Aclaracin 4 (mysql_errno y mysql_error): Cuando mandamos una sentencia SQL al servidor, esta puede dar una respuesta correcta o una respuesta incorrecta. Estas sentencias nos dicen que n de error se ha producido (mysql_errno) y el texto de error que el servidor MySQL ha respondido. En este caso pueden ocurrir varias cosas, que algn registro est mal formateado (por ejemplo, que el e-mail no sea un nmero) o que ya haya otro registro con el DNI especificado. Ambos casos tendrn un nmero de error diferente y un mensaje de error diferente. Estos casos se pueden probar poniendo un DNI repetido y una edad no vlida. La ventaja de esto es que, una vez conocidos los valores que retorna la base de datos, podemos tratarlas por separado (por ejemplo, sabemos que un DNI repetido provoca un error nmero

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_4.htm (2 of 3) [09/12/02 11:06:25 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL


1062). Es comn hacer "SELECT" antes de hacer "INSERT" para comprobar si un registro existe, esto es, adems de innecesario, ineficiente. La propia base de datos, si la hemos diseado bien, nos puede informar si el registro ya existe.

Envia esta pgina a un amigo

Blgica | Francia | Italia | Suiza | Quebec Contacto : tcnico | negocios | prensa | pub Copyright i (espaa) - una sociedad de

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_4.htm (3 of 3) [09/12/02 11:06:25 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

EXTRACCIN DE DATOS PALABRA Como puedes imaginar, hay una sentencia SQL para esta operacin. Aunque es un tanto compleja, veremos una versin simplificada pero muy funcional de la misma: SELECT campos FROM tabla WHERE condiciones ORDER BY orden; PALABRA :
Submit Query

Campos: es el conjunto de campos que queremos recuperar, como por ejemplo, "Nombre, Apellidos, ..." . Si quisiramos especificar "todos los campos" deberamos poner "*". Tabla: es la tabla de donde se desean extraer los datos.

.
El resto de la sentencia puede ser opcional. Por ejemplo, podramos extraer todos los campos de una tabla con la sentencias: SELECT * FROM usuarios; O bien, extraer slo algunos campos con la sentencia: SELECT Nombre FROM usuarios; Tambin podemos "operar" con los campos. Por ejemplo, podemos contar todos los registros de la siguiente forma: SELECT count(*) FROM usuarios; Y ser equivalente a: SELECT count(Nombre) FROM usuarios; Cuidado con las operaciones, no se pueden hacer cosas como: SELECT count(Nombre),Apellidos FROM usuarios; Pues la base de datos no sabe como combinar el recuento de nombres con cada apellido. Esas son operaciones ms complejas basadas en agrupaciones, para lo que es necesaria alguna experiencia. Otra cosa til es seleccionar "el mximo" o la media, por ejemplo Cul sera la edad mxima de todos los registros? SELECT max(edad) FROM usuarios; Al igual que ocurre con count, no se puede combinar esta "funcin" con todo.

Condiciones: Las condiciones sirven para especificar restricciones en los resultados.

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_5.htm (1 of 4) [09/12/02 11:06:41 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

Por ejemplo, si quisiramos seleccionar aquellos usuarios con 30 aos: SELECT * FROM usuarios WHERE edad=30; Pero si quisieramos seleccionar aquellos con ms de 30, sera: SELECT * FROM usuarios WHERE edad>30; Que ser diferente a los que tengan 30 o ms: SELECT * FROM usuarios WHERE edad>=30; Igualmente existe menor que "<" y menor o igual "<=" Otra situacin que nos podemos plantear es, si queremos seleccionar con dos condiciones, por ejemplo, con ms de 30 aos y que se llamen pepe: SELECT * FROM usuarios WHERE Edad>30 AND Nombre="pepe"; O aquellos que tengan menos de 30 aos o se llamen pepe: SELECT * FROM usuarios WHERE Edad<30 OR Nombre="pepe"; Tambien podramos agrupar condiciones. Por ejemplo, aquellos entre 30 y 50 o que se llamen pepe. Esta operacin se hace con parntesis: SELECT * FROM usuarios WHERE (Edad>=30 AND OR Nombre="pepe"; Edad<=50)

order: Aqu puedes especificar el orden en el que deseas que tus resultados aparezcan.

Hay dos formas de indicar el orden: ascendente y descendente: SELECT edad From usuarios ORDER BY edad desc; SELECT edad From usuarios ORDER BY edad asc; La primera de estas formas es la descendente y la segunda, la ascendente. Por supuesto, se puede ordenar por ms de un campo (primero ordena por el primer campo, y dentro de los que sean iguales para el primer campo, ordenar los del segundo): SELECT Edad, Nombre FROM usuarios ORDER BY Edad asc, Nombre desc; En este caso se ordenaran los resultados por edad ascendentemente, pero dentro de los que tuvieran la misma edad, se ordenaran por nombre de forma descendente

Ahora necesitamos saber, cmo combinar todo esto con php. La base es la misma: una sentencia que ya hemos visto: $result=mysql_query ("SELECT Nombre,Edad FROM usuarios;",$idconnect); Para recoger los resultados hay que tener en cuenta que lo que retorna la base de datos es una "tabla" con los datos que cumplen las condiciones que nosotros exigimos en nuestra sentencia SELECT:

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_5.htm (2 of 4) [09/12/02 11:06:41 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL


0Nombre a b c ... 1 - Edad 14 22 24 ...

0 1 2 ...

Si quisiramos recoger los datos de la primera fila tendramos que recoger los datos de la fila 0 columna 0 y 1: $Nombre=mysql_result ($result,0,0); $Edad=mysql_result ($result,0,1); alternativamente: si sabemos cul es el nombre del campo que estamos solicitando: $Nombre=mysql_result($result,0,"Nombre"); $Edad=mysql_result($result,0,"Edad"); Siguiendo esta regla podramos recoger todas las filas, pero cmo sabemos cuantos resultados hay? Con la sentencia mysql_numrows, que nos retorna el nmero de filas que se han obtenido. Por ejemplo: $result=mysql_query("SELECT Nombre,Edad FROM Usuarios;"); for ($i=0;$i<mysql_numrows($result);$i++) { $Nombre=mysql_result ($result,0,0); $Edad=mysql_result ($result,0,1); echo $Nombre."-".$Edad."<BR>"; } Ahora ya sabemos algunos conceptos bsicos sobre la obtencin de datos de una tabla, en una base de datos. Vamos a ver ahora, algunas cosas "tiles". Por ejemplo, es posible hacer un bucle como el anterior pero extrayendo datos y contando simultneamente? Este proceso ser mas rpido y se har de forma secuencial siempre: $result=mysql_query("SELECT Nombre,Edad FROM Usuarios;"); while ($fila=mysql_fetch_array($result)) { $Nombre=$fila[0]; $Edad=$fila[1]; echo $Nombre."-".$Edad."<BR>"; } o bien, $result=mysql_query("SELECT Nombre,Edad FROM Usuarios;"); while ($fila=mysql_fetch_array($result)) { $Nombre=$fila["Nombre"]; $Edad=$fila["Edad"]; echo $Nombre."-".$Edad."<BR>"; } La funcin mysql_fetch_array nos da como resultado un array tipo hash, en el que estn los datos. En la primera invocacin nos retorna la primera fila, en la segunda, la segunda fila y as sucesivamente. En el array que retorna para cada registro hay dos formas de acceder: por el n de columna (1er ejemplo) o por nombre del campo (2 ejemplo). Podemos modificarlo segn nuestras necesidades; por ejemplo, si slo queremos utilizar resultados de la primera forma podemos utilizar la expresin: mysql_fetch_array($result,MYSQL_NUM) y si slo queremos de la segunda forma: mysql_fetch_array($result,MYSQL_ASSOC)

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_5.htm (3 of 4) [09/12/02 11:06:41 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

por defecto, tiene la posibilidad de utilizar ambas. El ejemplo: En este ejemplo vamos a ver un listado de todos los usuarios que han metido sus datos, todos los datos menos el DNI, pues este se utilizar en la parte de Modificacin y Borrado. <HTML> <HEAD></HEAD> <BODY> <? $idconnect=mysql_connect("mysql1.opsion.fr", "db_iwebmaster_es","password"); if ($idconnect==0) { echo "Lo sentimos no se ha podido"; echo "conectar con la base de datos."; } else { mysql_select_db("db_iwebmaster_es",$idconnect); $idresult=mysql_query ("SELECT * from usuarios;",$idconnect); if ($idresult==0) echo "La sentencia es incorrecta."; else { echo "Hay ".mysql_numrows($idresult)." registros."; echo "<TABLE border=1><TR><TD>Nombre</TD>"; echo "<TD>Apellidos</TD>"; echo "<TD>Edad</TD>"; echo "<TD>Provincia</TD></TR>"; while ($registro=mysql_fetch_array($idresult)) { echo "<TR><TD>".$registro["Nombre"]."</TD>"; echo "<TD>".$registro["Apellidos"]."</TD>"; echo "<TD>".$registro["Edad"]."</TD>"; echo "<TD>".$registro["Provincia"]."</TD></TR>"; } echo "</TABLE>"; mysql_free_result ($idresult); } } mysql_close($idconnect); ?> </BODY> </HTML> Ejecutar este ejemplo

Envia esta pgina a un amigo

Blgica | Francia | Italia | Suiza | Quebec Contacto : tcnico | negocios | prensa | pub Copyright i (espaa) - una sociedad de

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_5.htm (4 of 4) [09/12/02 11:06:41 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

MODIFICACIN DE DATOS PALABRA Conociendo la sentencia SELECT y la sentencia INSERT esta operacin se entiende bien. Es una sentencia del estilo (en forma simplificada): UPDATE tabla SET campo1=valor1,campo2=valor2,... WHERE condiciones; PALABRA :
Submit Query

Ten encuenta que "valor1,valor2,..." tendrn que ir entre comillas si el tipo del campo es una cadena de carcteres. La comprensin de esta sentencia es bastante sencilla, modifica los campos (campo1, campo2,...) en aquellos registros donde se cumplan las "condiciones". Por ejemplo, si quisiramos modificar los registros de un determinado DNI: UPDATE usuarios SET Nombre="Pepe" WHERE DNI="9999999"; Fcil, verdad! Ahora vamos a complicarlo un poquito viendo algo que suele ser muy til. Por ejemplo: si quisiramos hacer un programa en el que conociendo la fecha de nacimiento del usuario incrementara la edad automticamente (suponiendo que tenemos el campo fecha en la base de datos): UPDATE usuarios SET Edad=Edad+1 WHERE FechaCumpleanos="29/05/01"; Aunque no lo veamos ahora, tambin existe un tipo de datos llamado de tipo "fecha" llamado "date", pero en el caso anterior podemos suponer que FechaCumpleaos es una simple cadena. Lo que es importante, es la capacidad de realizar operaciones de este tipo; por ejemplo, un programador que desconociera esto, primero hara un SELECT de los registros, extraera los valores, y ejecutara un UPDATE con el valor de la Edad incrementado a mano. El efecto es el mismo, pero no la eficacia. Tambin se pueden dar otros resultados, como combinar diferentes campos casi de la forma que queramos: UPDATE tabla SET campo3=campo1+campo2 WHERE condiciones; UPDATE tabla SET campo3=campo1*campo2 WHERE condiciones; UPDATE tabla SET campo3=campo1/campo2 WHERE condiciones; ... Estas operaciones incluso se pueden aplicar en un select. Por ejemplo, una sentencia que nos da el precio con IVA de una tabla de productos: SELECT Nombre,Precio+Precio*0.16 FROM Productos; O bien: SELECT Nombre,Precio*1.16 FROM Productos; La forma de utilizar esto en PHP es relativamente sencilla y parecida a las de insert: $Peticion="UPDATE usuarios SET Nombre=\"$Nombre\"; $Peticion.="WHERE DNI=\"$DNI\";"; $idresult=mysql_query ($Peticion, $idconnect);

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_6.htm (1 of 3) [09/12/02 11:06:49 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL


if ($idresult==0) echo "La sentencia es incorrecta."; else { echo "Se han modificado "; echo mysql_affected_rows($idresult); echo "registros"; } La sentencia mysql_affected_rows nos retorna el nmero de registros que han sido modificados (en este caso). Esta sentencia es vlida cuando hacemos tambin un INSERT y un DELETE (ver 4.4) pero en estos casos retorna el nmero de registros insertados y el nmero de registros borrados. El Ejemplo: El ejemplo de este caso ser un ejemplo que consta de 3 pasos: se pedir que el usuario introduzca el DNI, luego se mostrar un formulario con sus datos para que pueda modificarlos y despus se modificarn los mismos. PASO 1: Formulario formbuscar.htm para extraer los datos del registro a modificar. <FORM action="formmodif.php" method="post"> <b> DNI:</b> <input type="text" name="DNI"><br> <input type="submit" name="enviar"> </FORM> PASO 2: Bsqueda del registro con el DNI obtenido del paso 1. <? $idconnect=mysql_connect("mysql1.opsion.fr", "db_iwebmaster_es","password"); if ($idconnect==0) { echo "Lo sentimos no se ha podido"; echo " conectar con la base de datos."; } else { mysql_select_db("db_iwebmaster_es",$idconnect); $Peticion="SELECT * from usuarios where DNI='$DNI';"; $idresult=mysql_query ($Peticion,$idconnect); if ($idresult==0) echo "La sentencia es incorrecta."; else { if ($c=mysql_numrows($idresult)>0) { $registro=mysql_fetch_array($idresult); } mysql_free_result ($idresult); } } mysql_close($idconnect); if ($c>0) : ?> Formulario de modificacin, modifique los campos que desee oportunos y presione modificar. <br> <form name="form1" action="modificar.php" method="post"> <p>Nombre: <input type="text" name="Nombre" value="<? echo $registro["Nombre"] ?>"> <br> Apellidos: <input type="text" name="Apellidos" value="<? echo $registro["Apellidos"] ?>"> <br> Edad: <input type="text" name="Edad" value="<? echo $registro["Edad"] ?>"> <br> DNI: <input type="text" name="DNI" value="<? echo $registro["DNI"] ?>"> <br>

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_6.htm (2 of 3) [09/12/02 11:06:49 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL


Provincia: <input type="text" name="Provincia" value="<? echo $registro["Provincia"] ?>"> <br><input type="hidden" name="oldDNI" value="<?echo $registro["DNI"] ?>"><br> <input type="submit" name="Submit" value="Modificar"> </p> </form> <? else : ?> No se ha encontrado el registro. <? endif; ?> PASO 3: Modificacin de los datos del registro del paso anterior. <? $idconnect=mysql_connect("mysql1.opsion.fr", "db_iwebmaster_es","password"); if ($idconnect==0) { echo "Lo sentimos no se ha podido"; echo "conectar con la base de datos."; } else { mysql_select_db("db_iwebmaster_es",$idconnect); $Peticion="UPDATE usuarios SET DNI='$DNI',"; $Peticion.="Provincia='$Provincia',"; $Peticion.="Nombre='$Nombre',Apellidos='$Apellidos',"; $Peticion.="Edad=$Edad WHERE DNI='$oldDNI'"; $idresult=mysql_query ($Peticion,$idconnect); if ($idresult==0) { echo "La sentencia no se ha podido ejecutar.<BR>"; echo mysql_errno().":".mysql_error()."<BR>"; } else { $r=mysql_affected_rows($idconnect); echo "Se han modificado : $r registros <BR>"; if ($r==0) echo "No hay ningun registro con DNI=$oldDNI."; } mysql_close($idconnect); } ?> Ejecutar este ejemplo

Envia esta pgina a un amigo

Blgica | Francia | Italia | Suiza | Quebec Contacto : tcnico | negocios | prensa | pub Copyright i (espaa) - una sociedad de

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_6.htm (3 of 3) [09/12/02 11:06:49 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL

ELIMINACIN DE DATOS PALABRA Esta parte es tambin bastante fcil, sobre todo habiendo visto la sentencia SELECT ya que el formato de las condiciones son iguales: DELETE FROM tabla WHERE condiciones; PALABRA :

Submit Query

Si deseamos eliminar los registros que tengan menos de 15 aos: DELETE FROM usuarios WHERE Edad<15; Fcil verdad! En php es parecido al cdigo tpico: $Peticion="DELETE FROM usuarios WHERE DNI=\"$DNI\;"; $idresult=mysql_query ($Peticion, $idconnect); if ($idresult==0) echo "La sentencia es incorrecta."; else { echo "Se han eliminado "; echo mysql_affected_rows($idresult); echo " registros."; } El Ejemplo: Cdigo HTML formulario para recoger el DNI, formeliminar.php: <FORM action="eliminar.php" method="post"> <b> DNI:</b> <input type="text" name="DNI"> <br> <input type="submit" value="Eliminar" name="submit"> </FORM> Cdigo PHP que realiza la eliminacin del DNI insertado en el paso anterior DNI, eliminar.php: <? $idconnect=mysql_connect("mysql1.opsion.fr", "db_iwebmaster_es", "Password"); if ($idconnect==0) echo "Lo sentimos no se ha podido"; echo " conectar con la base de datos."; else { mysql_select_db("db_iwebmaster_es",$idconnect); $Peticion="DELETE FROM usuarios WHERE DNI='$DNI'"; $idresult=mysql_query ($Peticion,$idconnect); if ($idresult==0) { echo "La sentencia no se ha podido ejecutar.<BR>"; echo mysql_errno().":".mysql_error()."<BR>"; }

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_7.htm (1 of 2) [09/12/02 11:06:56 p.m.]

i (espaa) - BIENVENIDOS AL ESPACIO WEBMASTER :: CURSO DE PHP / MYSQL


else { $r=mysql_affected_rows($idconnect); echo "Se han eliminado : $r registros <BR>"; if ($r==0) echo "No hay ningun registro con DNI=$oldDNI."; } mysql_close($idconnect); } ?>

Ejecutar este ejemplo

Envia esta pgina a un amigo

Blgica | Francia | Italia | Suiza | Quebec Contacto : tcnico | negocios | prensa | pub Copyright i (espaa) - una sociedad de

file:///D|/Archivos%20bajados/manuales/php_mysql%20manual/curso_7.htm (2 of 2) [09/12/02 11:06:56 p.m.]

También podría gustarte