Está en la página 1de 12

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA

301127- Programacin de sitios web


Act 12: Leccin Evaluativa 3


1
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


2
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


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


4
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


5
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


6
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


7
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


8

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


9
?>

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 cerrar los enlaces persistentes generados con
mysql_pconnect().

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


10
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";
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
301127- Programacin de sitios web
Act 12: Leccin Evaluativa 3


11
?>
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
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
301127- Programacin de sitios web
Act 12: Leccin Evaluativa 3


12
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().

También podría gustarte