Está en la página 1de 12

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

BASES DE DATOS Hasta ahora hemos visto la funciones bsicas de PHP, lo que viene a continuacin ya es sobre la forma en como podemos acceder a bases de datos, veremos como acceder a ellas en dos sistemas de bases de datos diferentes, los cuales son MySQL Server y Microsoft Access. El primer sistema que veremos es MySQL Server, pero antes de ver cdigo PHP, aprenderemos un poco de este sistema, para los ejemplos en PHP ya va a ser necesario que tengamos una base de datos creada por lo tanto pondremos atencin en las formas en que estas se crean.

QUE ES MYSQL

Administrador de Base de Datos Una base de datos es un conjunto de datos estructurados. Esto podra ser cualquier cosa, desde una simple lista de compras hasta una galera de pinturas o la gran cantidad de informacin que se maneja en una corporacin. Para agregar, acceder y procesar los datos almacenados en una base de datos computacional, se necesita un sistema administrador de base de datos tal como MySQL. Adems los computadores son muy buenos manejando grandes cantidades de datos, el administrador de base de datos juega un rol central en la computacin, ya sea como utilidad autnoma o parte de otra aplicacin. Sistema administrador de base de datos relacionales Una base de datos relacional almacena datos en tablas separadas, ms bien colocando todos los datos en un gran almacn. Esto agrega velocidad y flexibilidad. Las tablas son enlazadas por relaciones definidas haciendo posible combinar datos desde varias tablas solicitadas. El SQL forma parte de MySQL, conocido como Lenguaje de Consultas Estructurado, es el lenguaje estandarizado ms comn usado para acceder base de datos. Software de Fuente Abierta Fuente abierta significa que es posible que pueda ser usado y modificado por cualquiera. Alguien puede bajar MySQL desde Internet y usar ste sin tener que pagar nada. Alguien puede estudiar el cdigo fuente y cambiarlo de acuerdo a sus

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

necesidades. MySQL usa el GPL de la GNU, para definir lo que se puede hacer con el software en diferentes situaciones. Uso de MySQL MySQL es muy rpido, seguro y fcil de usar. MySQL tambin ha desarrollado un conjunto de caractersticas muy prcticas, en estrecha cooperacin con otros usuarios. MySQL fue desarrollado para manejar grandes bases de datos mucho ms rpido que las soluciones existentes y ha sido usado exitosamente en ambientes de produccin con altas demandas, por varios aos. Aunque est bajo un desarrollo constante, MySQL siempre ofrece conjunto de funciones muy poderoso y eficiente. La conectividad, velocidad y seguridad hace de MySQL una suite poderosa para acceder a bases de datos en Internet. CARACTERISTICAS TECNICAS DE MYSQL Caractersticas Tcnicas de MySQL MySQL es un sistema Cliente/Servidor que consta de un servidor SQL multihilo que soporta diferentes backends, variados programas cliente y de libreras, administrador de herramientas y un programa de interface. MySQL contribucin para muchos de los software disponibles Es mucho ms probable que se encuentre que diversas aplicaciones ya soportan MySQL. Los valores centrales de MySQL son : La mejor y ms usada base de datos en el mundo. Disponible y Accesible para todos Fcil de usar Se est perfeccionando continuamente mientras permanece rpida y segura. Divertida para usar y perfeccionar. Libre de molestias. CARACTERISTICAS PRINCIPALES DE MYSQL A continuacin se describen algunas de las caractersticas ms importantes de MySQL:

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

Escrito en C y C++, testado con GCC 2.7.2.1. Usa GNU autoconf para portabilidad. Clientes C, C++, Eiffel,PHP,Python,JAVA, Perl, TCL. Multiproceso, es decir puede usar varias CPU si stas estn disponibles. Puede trabajar en distintas plataformas y S.O. distintos. Sistema de contraseas y privilegios muy flexible y segura. Todas la palabras de paso viajan encriptadas en la red. Registros de longitud fija y variable. 16 ndices por tabla, cada ndice puede estar compuesto de 1 a 15 columnas o partes de ellas con una longitud mxima de 127 bytes. Todas las columnas pueden tener valores por defecto. Utilidad Isamchk para chequear, optimizar y reparar tablas. Todos los datos estn grabados en formato ISO8859_1. Los clientes usan TCP o UNIX Socket para conectarse al servidor. Todos los comandos tienen -help o -? Para las ayudas. Soporta diversos tipos de columnas como enteros de 1, 2, 3, 4, y 8 bytes, coma , flotante, doble precisin, carcter, fechas, enumerados, etc. ODBC para Windows 95 (con fuentes), se puede utilizar ACCESS para conectar con el servidor. Muy rpida usando joins, optimizada para un barrido multi-joins. Todas las funciones y operadores soportan en el SELECT y WHERE como partes de consultas. Ejemplo: mysql> SELECT CONCAT(nombre," ",apellido) FROM nombre_tabla WHERE ingreso >10000 AND edad >30 Todas las clausulas SQL soportan GROUP BY y ORDER BY.

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

Funciones para el manejo de php con mysql

mysql_connect ( ) Abre una conexin a un servidor MySQL int mysql_connect ([string hostname [:puerto] [:/camino/al/socket] [, string usuario [,string password]]]) Devuelve: Un identificador de enlace positivo si tiene exito, o falso si error. mysql_connect()establece una conexin a un servidor MySQL. Todos los argumentos son opcionales, y si no hay , se asumen los valores por defecto (localhost, usuario propietario del proceso del servidor, password vacia). El hostname puede incluir tambien un nmero de puerto . ej. "hostname:puerto"o un camino al socket ej. ":/camino/al/socket"para localhost. Nota: Soporte para ":puerto"fue aadido en PHP 3.0B4. Soporte para ":/camino/al/socket"fue aadido en PHP 3.0.10. En el caso de que se haga una llamada a mysql_connect() con los mismos argumentos, no se establecer un nuevo enlace, sino que se devolver el enlace ya abierto. El enlace al servidor sera cerrado tan pronto como la ejecucin del script finalice, a menos que se cierre antes explicitamente llamando a mysql_close(). Ejemplo 1. Ejemplo de MySQL connect <?php $link = mysql_connect ("kraemer", "marliesle", "secret") { or die ("Could not connect"); } print ("Connected successfully"); mysql_close ($link); ?>

mysql_select_db () Selecciona un base de datos MySQL

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

int mysql_select_db (string base_de_datos [, int identificador_de_enlace]) Devuelve : true si exito, false si error. mysql_select_db() establece la base activa que estara asociada con el identificador de enlace especificado. Si no se especifica un identificador de enlace, se asume el ultimo enlace abierto. Si no hay ningun enlace abierto, la funcin intentara establecer un enlace como si se llamara a mysql_connect(). Toda llamada posterior a mysql_query() utilizara la base activada.

mysql_fetch_array() Extrae la fila de resultado como una matriz asociativa array mysql_fetch_array (int id_resultado [, int tipo_de_resultado]) Devuelve una matriz que corresponde a la sentencia extraida, o falso si no quedan ms filas. mysql_fetch_array() es una versin extendida de mysql_fetch_row(). Adems de guardar los datos en el indice numrico de la matriz, guarda tambin los datos en los indices asociativos, usando el nombre de campo como clave. Si dos o ms columnas del resultado tienen el mismo nombre de campo, la ltima columna toma la prioridad. Para acceder a la(s) otra(s) columna(s) con el mismo nombre, se debe escificar el indice numerico o definir un alias para la columna. select t1.f1 as foo t2.f1 as bar from t1, t2 La funcin mysql_fetch_array() no es significativemente mas lenta que mysql_fetch_row(), sin embargo tiene un valor aadido importante. El segundo argumento opcional tipo_de_resultado en mysql_fetch_array() es una constante y puede tomar los valores siguientes: MYSQL_ASSOC, MYSQL_NUM, y MYSQL_BOTH. (Esta funcionalidad fue aadida en PHP 3.0.7) Ejemplo 1. mysql fetch array <?php mysql_connect($host,$user,$password); $result = mysql_db_query("database","select * from table"); while($row = mysql_fetch_array($result)) { echo $row["user_id"];

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

echo $row["fullname"]; } mysql_free_result($result); ?>

mysql_free_result () Libera la memoria del resultado int mysql_free_result (int id_resultado) mysql_free_result() solo necesita ser llamada si te preocupa usar demasiado memoria durante la ejecucin de tu script. Toda la memoria del resultado especificado en el parametro del identificador de resultado sera automaticamente liberada.

mysql_num_rows() Devuelve el numero de filas de un resultado int mysql_num_rows (int id_resultado) mysql_num_rows() Devuelve el numero de filas de un identificador de resultado.

mysql_query () Envia una sentencia SQL a MySQL int mysql_query (string sentencia [, int identificador_de_enlace]) mysql_query() envia una sentencia a la base activa en el servidor asociado al identificador de enlace. Si no es especificado un identificador_de_enlace, se asumira el ultilmo enlace abierto. Si no hay ningun enlace abierto, la funcin intenta estalecer un enlace como si se llamara funcin mysql_connect() sin argumentos, y lo utiliza. La sentencia no puede terminar por punto y coma. mysql_query() devuelve TRUE (no-cero) o FALSE para indicar si la sentencia se ha ejecutado correctamente o no. Un valor TRUE significa que la sentencia era correcta y pudo ser ejecutada en el servidor. No indica nada sobre el numero de

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

fila devueltas. Es perfectamente posible que la sentencia se ejecute correctamente pero que no devuelve ninguna fila. La siguiente sentencia es invalida sintacticamente, asi que mysql_query() falla y devuelve FALSE: Ejemplo 1. mysql_query() <?php $result = mysql_query ("SELECT * WHERE 1=1") or die ("Invalid query"); ?> La siguiente sentencia es invalida semanticamente si my_col no es una columna de la tabla my_tbl, asi que mysql_query() falla y devuelve FALSE

mysql_affected_rows() Devuelve el nmero de filas afectadas de la ltima operacin MySQL int mysql_affected_rows ([int identificador_de_enlace]) mysql_affected_rows() devuelve el nmero de filas afectadas en la ultima sentencia INSERT, UPDATE o DELETE sobre el servidor asociado con el identificador de enlace especificado. Si el identificador de enlace no ha sido especificado, se asume por defecto el ltimo enlace. Si la ltima sentencia fue un DELETE sin clausula WHERE, todos los registros han sido borrados de la tabla pero esta funcin devolvera cero. Este comando no es efectivo para las sentencias SELECT, sino slo para las sentencias que modifican registros. Para conseguir el nmero de lineas devueltos por un SELECT, usar mysql_num_rows().

mysql_result () Devuelve datos de un resultado int mysql_result (int id_resultado, int numero_de_fila [, mixed campo]) mysql_result() devuelve el contenido de una celda de un resultado MySQL. El campo argumento puede ser el nombre del campo o el offset o tabla.nombre_del_campo. Si el nombre de la columna tiene un alias (select foo as bar from...), utilice el alias en lugar del nombre de la columna.

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

Cuando se trabaja un un gran resultado, debe considerarse la utilizacion de una funcion que devuelva una fila entera ya que estas funciones son MUCHO mas rapidas que mysql_result(). Tambien, especificando un offset numerico en lugar del nombre del campo, la ejecucion sera mas rapida. Las llamadas a mysql_result() no deben mezclarse con llamadas a las otras sentencias que trabajan con un identificador de resultado

mysql_errno () Deuelve el nmero del mensaje de error de la ltima operacin MySQL int mysql_errno ([int identificador_de_enlace]) Los errores devueltos por mySQL no indican los warnings. Usar estas funciones para encontrar el nmero de error. <?php mysql_connect("marliesle"); echo mysql_errno().": ".mysql_error()."<BR>"; mysql_select_db("nonexistentdb"); echo mysql_errno().": ".mysql_error()."<BR>"; $conn = mysql_query("SELECT * FROM nonexistenttable"); echo mysql_errno().": ".mysql_error()."<BR>"; ?>

mysql_error () Devuelve el texto del mensaje de error de la ltima operacin MySQL string mysql_error ([int identificador_de_enlace]) Los errores devueltos por mySQL no indican los warnings. Usar estas funciones para encontrar el nmero de error. <?php mysql_connect("marliesle"); echo mysql_errno().": ".mysql_error()."<BR>"; mysql_select_db("nonexistentdb"); echo mysql_errno().": ".mysql_error()."<BR>"; $conn = mysql_query("SELECT * FROM nonexistenttable"); echo mysql_errno().": ".mysql_error()."<BR>";

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

?> mysql_close ( ) cierra el enlace con MySQL int mysql_close ([int identificador_de_enlace]) Devuelve: verdadero si exito, falso si error. mysql_close() cierra el enlace con la base MySQL que esta asociada con el identificador de enlace especificado. Si no se especifica el identificador de enlace, se asume por defecto el ltimo enlace. Nota: Normalmente no es necesario ya que la aperturas no-persistentes son cerradas automaticamente al final de la ejecucin del script. mysql_close() no mysql_pconnect(). cerrar los enlaces persistentes generados con

Ejemplo 1. Ejemplo de MySQL close <?php $link = mysql_connect ("kraemer", "marliesle", "secret") { or die ("Could not connect"); 623 MySQL } print ("Connected successfully"); mysql_close ($link); ?>

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

Sesiones Qu son las sesiones?, bsicamente una sesin es la secuencia de pginas que un usuario visita en un sitio web. Desde que entra en nuestro sitio, hasta que lo abandona. El trmino sesin en PHP, session en ingls, se aplica a esta secuencia de navegacin, para ello crearemos un identificador nico que asignamos a cada una de estas sesiones de navegacin. A este identificador de sesin se le denomina, comnmente, como la sesin. El proceso en cualquier lenguaje de programacin podra ser algo as: Existe una sesin?, si existe lo retomamos, si no existe la creamos y le damos un identificador nico. Y para que no perdamos el hilo de la navegacin del usuario deberemos asociar esta sesin a todas las direcciones (URLs) y acciones de formularios. Podemos tambin crear una cookie que incluya el identificador de sesin, pero es conveniente recordar que la disponibilidad o no de las cookies depende del usuario, y no es conveniente fiarse de lo que un usuario pueda o no tener habilitado. Lo contado hasta ahora es teora pura y es aplicable a cualquier lenguaje de programacin C, Perl, etc. Los que programamos en PHP4 tenemos la suerte de que toda la gestin de sesiones la hace el mismo PHP. Por lo tanto lo comentado aqu sobre sesiones es solo aplicable a PHP4. Inicializacin de la sesin Para utilizar sesiones en PHP lo primero es inicializarlas. Podemos hacerlo explcitamente, mediante la funcin session_start(), o al registrar una variable en una sesin mediante session_register('miVariable'). En ambos casos se crea una nueva sesin, si no existe, o se retoma la sesin actual. Veamos un sencillo ejemplo: <?php session_start(); echo "Se inici la sesin";

10

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

?> Esta es la forma ms bsica, si el usuario tiene las cookies activadas, PHP habr insertado de forma automtica la sesin y sta ser pasada de una pgina a otra sin hacer nada ms. Desde un punto de vista prctico la sesin es operativa, pero no vemos nada. Podemos obtener la sesin en cualquier momento mediante la funcin session_id(). <?php session_start(); echo 'La sesin actual es: '.session_id(); ?> En este caso session_start() comprueba en las cookies que existe una sesin y continua con ella, session_id() devuelve el identificador actual. Veamos otro ejemplo que, tal vez, te lo aclare un poco ms: <?php session_register('contador'); echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++$contador.'</a>'; ?> Como dije anteriormente la sesin se crea si no existe o se recoge mediante session_start(), o tambin cuando se registra una variable de sesin mediante session_register(). Si no has utilizado nunca las sesiones, el concepto de variable de sesin, puede resultar un poco extrao. Bsicamente es una variable, como cualquiera de las que gestiona PHP4, pero que reside en un espacio especfico en el servidor, junto con el identificador de sesin, y que pertenece nicamente a un usuario. En nuestro ejemplo anterior, registramos la variable $contador en la primera lnea del script. En la segunda lnea, entre otras cosas, cada vez que recarguemos la

11

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programacin de sitios web

Act 12: Leccin Evaluativa 3

pgina o hagamos click sobre el enlace, el valor de $contador se incrementar en 1. En esta lnea hacemos uso de la variable reservada $PHP_SELF, que hace referencia al propio script en ejecucin y una constante propia de PHP4, $SID, que contiene el nombre de la sesin y el identificador de la misma. Podemos averiguar tambin el nombre de la sesin, o modificarlo, mediante la funcin session_name().

12

También podría gustarte