[Ir al menú de PHP]
PHP y MySQL

Conexión PHP y MySQL

Desde PHP es posible invocar funciones y ejecutar sentenciasde específicas de MySQL. La interconexión entre ambos programas se realiza mediante una de estas instrucciones:

$res=mysql_db_query (base, sent, $enl)

Envia una sentencia MySQL al servidor que selecciona la base de datos base y ejecuta la sentencia (sent sobre ella y devuelve un identificador de resultado positivo o falso si se produce algún tipo de error.

El identificador de enlace ($enl) es opcional (sería el valor devuelto por la función mysql_connect ejecutada previamente.

Si se omitiera $enl la función mysql_db_query intentaría buscar un enlace abierto y si no lo hubiera ejecutaría automaticamente un mysql_connect() en el que host sería el valor localhost, usuario root y password una cadena vacia.

¡¡Cuidado...!! Si has puesto una password al usuario root o si estás escribiendo tu código para un servidor remoto deberás cerciorarte de abrir un conexión antes de ejecutar esta instrucción. De lo contrario -como es evidente- daría error ya que los parámetros de la conexión automática no coincidirían con la configuración del servidor.

$res=mysql_list_dbs ($enl)

Devuelve un identificador de resultado que contiene las bases disponibles en el servidor con el que está establecida la conexión.

mysql_select_db (base, $enl)

Selecciona un base de datos MySQL (base) y la asocia con el identificador de enlace especificado(enl). Si no se especifica un identificador de enlace, se comportará -en esa circunstancia- de igual forma que la sentencia anterior.

mysql_query (sent, $enl)

Envia una sentencia sent a la base activa asociada al identificador de enlace $enl.

Si no es especificado un identificador de enlace, asumirá el último enlace abierto.

Devuelve TRUE si la sentencia se ha ejecutado correctamente y FALSE en caso contrario.

¡¡Cuidado...!!

La ejecución de esta instrucción requiere que previamente se haya asociado un base de datos al identificador de enlace mediante una instrucción mysql_select_db.

mysql_fetch_row ($res)

Seleciona una fila de datos del resultado asociado al identificador de resultado $res.

Cada fila -puede contener varias- es devuelta como una matriz escalar cuyo primer índice es cero.

Devolverá FALSE cuando ya no queden más filas.

Obviamente, previo a esta instrucción es necesario haber ejecutado un mysql_db_query que habrá sido la función generadora del identificador de resultado.

mysql_num_rows ($res)

Esta función devuelve el número de filas que contiene el identificador de resultado.

mysql_fetch_array ($res)

Es una versión extendida de
mysql_fetch_row. Además de guardar los datos en el indice numerico del array, los guarda también con indices asociativos, usando el nombre del campo como clave.


 
 


Crear una base de datos utilizando MySQL


En la página anterior hemos visto como la instrucción mysql_create_db de PHP nos permitía crear una base de datos. Las sentencias MySQL que permiteN crear una base de datos son estas:

CREATE DATABASE IF NOT EXISTS nombre
CREATE DATABASE nombre
La segunda devolvería un error en el caso de que intentáramos crear una base de datos ya existente mientras que la primera omitiría ese error.

Ninguna de ellas sobreescribiría una base de datos preexistente


Ver ejemplo sin NOT EXISTS Ver ejemplo con NOT EXISTS


Borrar una base de datos utilizando MySQL


También existen sentencias MySQL alternativa al mysql_drop_db de PHP. Son estas:

DROP DATABASE IF EXISTS nombre
DROP DATABASE nombre

Ver ejemplo sin IF EXISTS Ver ejemplo con IF EXISTS


Manejando identificadores de resultados


Ya sabes aquello de cree el ladrón... que todos son de su condición. Algo similar me ocurre a mí. Como lo mío han sido sangre, sudor y lágrimas... para aclararme de lo que son y significan los identificadores de resultado y diferenciar los conceptos mysql_fetch_row y mysql_fetch_array ... intenté tratar de explicarlo claro aquí al margen... pero como Salamanca no presta... a quien Dios no da creo que lo de la claridad no ha sido precisamente un éxito, así que he tratado de hacer un ejemplo y ponertelo aquí.

Si ejecutas el script (ya sabes que para que puedas ejecutarlo he tenido que cambiar los valores del localhost por los de freesurf) no te asustes... la lista que aparece es inmensa ya que nos aparecerá toda la lista de bases de datos del servidor... y claro... son un montón.


Ver código Ejecutar el script


Crear una TABLA utilizando MySQL


En el caso de creación de TABLAS no tenemos otra opción que utilizar las sentencias MySQL. Son estas:

CREATE TABLE IF NOT EXISTS (nombre_campo1 parametros_campo1, nombre_campo2 parametros_campo2,... nombre)
CREATE TABLE (nombre_campo1 parametros_campo1, nombre_campo2 parametros_campo2,... nombre)
La única diferencia entre ambas opciones es la conocida comprobación/no comprobación de la preexistencia y el devolver/no devolver error en tal caso.

Veamos ahora lo que significan los parámetros.

nombre_campoxx es eso... el nombre que quieres asignar a ese campo y para el que normalmente los expertos suelen utilizar algo que aluda al contenido tal como: fec_nac, nom_perro y lindezas similares...

Por si tienes la tentación de poner nombres que coincidan con palabras reservadas mi consejo es que huyas de la tentación igual que hacen los perros cuando truena, pero si tu testarudez desborda mi consejo, entonces... entonces... aparte de decirte aquello de ... mira que te he advertido.. te diré que las escribas entre ` `. Fíjate bien que no son comillas tradicionales, que son acentos graves.

Si sigues mi consejo de no utilizar palabras reservadas una segunda advertencia: los nombres de campo no se escriben entre comillas.

Vamos ahora con los parametros_campoxx. Por cada campo que crees tienes que asignararle algunos parámetros obligatoriamente algunos (tipo de campo o tipo de campo y dimensión) y otros opcionales que los entendidos llaman flags.

¿Qué te olvidaste de los tipos de campos? Pulsa aquí y míralos y de paso un recordatorio... lo que aparece en negrita es lo obligatorio, lo que aparece entre corchetes y en cursiva lo voluntario.

Estos son los flags pueden ser devueltos si tu versión de MySQL los soporta: Traqui... ya se que no hemos hablado aun de los índices.. paciencia... todo llega...:-)
Ver código fuente de una creación de tabla

Sugerir a un/a amig@ Envíame tus comentarios
Anterior
Indice
Siguiente