Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Documentos relacionados
CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Centro de Capacitación en Informática

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Curso de PHP con MySQL Gratis

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

NORMA (SEPA) 22/11/2013

Ahora comencemos!... Las operaciones matemáticas fundamentales pueden realizarse de forma rápida y sencilla con Miicrosofftt Excell.

INSTALACIÓN DE GATEWAYS SIP

Manual de usuario Sucursal Virtual

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES

Configuración de DNS seguros

Estimado usuario. Tabla de Contenidos

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LAS BARRAS. La barra de acceso rápido

CÓMO CREAR NUESTRO CATÁLOGO

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

QUÉ ES UNA BASE DE DATOS Y CUÁLES SON LOS PRINCIPALES TIPOS? EJEMPLOS: MYSQL, SQLSERVER, ORACLE, POSTGRESQL, INFORMIX (DV00204A)

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT


Que es Velneo vdataclient V7?

Índice general de materias LECCIÓN 7 74

CORREO ELECTRÓNICO GMAIL. 1 Enviar correo electrónico Acceder a una cuenta de correo electrónico... 2

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

12 Minería de Datos Reglas de asociación.

MANUAL TIENDA VIRTUAL. Paseo del Gran Capitán, Nº 62, Salamanca. Telf.: Fax:

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

PHP - II. Elaborador por: Edgar Manuel Amézquita y Sebastián González R.

Instalación Joomla. Instrucciones para instalar Joomla en un pc en la red local del instituto, o en un servidor en Internet

1. Solicitando una cuenta de correo a nuestro proveedor de Internet. 2. Adquiriendo una cuenta de correo a través de la web (webmail).

Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2

Internet aula abierta

Terminales de Captura de Juegos Pax S-80

Modulo 1 El lenguaje Java

La ventana de Microsoft Excel

MATERIAL 2 EXCEL 2007

Este botón situado en la barra de título de la ventana de la aplicación, nos da acceso a un menú mediante el cual podemos, entre otras opciones:

1 MANUAL DE INSTALACIÓN

Squipy v Introducción

Muchos programas de aplicación contienen herramientas para proteger la información, por ejemplo, Microsoft Word que te permite:

Centro de Capacitación en Informática

Sesión 3 - Movimiento Diferencial

SUPREME SD8363E, SUPREME SF8172V )

Creando una webquests

OBTENER DATOS EXTERNOS

NORMA 34.14(SEPA) 05/11/2013

Para aquellos que tengan conocimientos de Access es lo más parecido a una consulta de referencias cruzadas, pero con más interactividad.

Teclado sobre una PDA para Personas con Parálisis Cerebral

Conectar Flash con Access usando MDM Zinc

VENTAJAS Y DESVENTAJAS DE LAS TECNOLOGIAS

Vamos a crear nuestro primer juego en el que tendremos que coger la comida que esta protegida por los gatos

Base de datos: Access. Unidad Didáctica 3: Planificación y diseño de una base de datos

PROPUESTAS COMERCIALES

Crear usuario en XP. Redes Paso a Paso. Introducción Explicación Paso 1 Paso 2 Paso 3 Paso 4 Paso 5 Paso 6 Paso 7 Paso 8 Paso 9 Paso 10. Descripción.

1. Inicio 2 2. Menú Principal 2 3. Selección de Clientes 4 4. Crear Documentos Documento Manual Documento Automático 8

Comerciales. Comisiones en Documentos de Venta WhitePaper Enero de 2008

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS

Programa Presupuestos de Sevillana de Informática.

Conceptos Generales en Joomla

L U I S P A T I Ñ O IN FOR M Á T I C A SIS T E M A S AVA N Z A DOS

Manual de usuario de Solmicro BI. Página 1

PHP Perfect SQL v1.0 (SQL perfectas en PHP)

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

Módulo II - PowerPoint

Programa de Fabricación para Android

MANUAL DE USUARIO UTILIZACIÓN DE LA EXTRANET

GUÍA DE INSTALACIÓN Y ACTIVACIÓN

PRÁCTICAS DE GESTIÓN GANADERA:

Cómo gestionar menús en Drupal 7

MANUAL DE MI MAQUINA DE APRENDER INGLES

Introducción Cómo empezar a monetizar mi blog? Porqué son tan interesantes los ingresos por sistemas de afiliados?...

Cómo ingresar un pedido de venta en el SAP ERP desde la aplicación móvil creada con GeneXus

NORMA / (SEPA)

FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 MÓDULO DE DISEÑO Y PRODUCCIÓN DE MATERIALES UNIDAD 6 B

Manual de Uso Web profesional

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

GUÍA BÁSICA DE USO DEL SISTEMA RED

CAPITULO DE BIENES AFECTOS O DE INVERSIÓN

DISENO DE CURSOS AUTOGESTNOS. Mana del Socorro Perez Alcala

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

Construcción de Escenarios

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

PROPORCIONALIDAD - teoría

SOLUCIÓN CASO PRÉSTAMOS II

PARKING ZONE v1.8 MANUAL DEL USUARIO

Práctica 3 de Redes de Área Local Cliente y Servidor de ficheros concurrente

Secretaría de Salud. Subsecretaria de Innovación y Calidad. Dirección General de Calidad y Educación en Salud

TEMA 27: FACTURACIÓN Y RECTIFICACIÓN DE FACTURAS DE VENTAS EN SAP. CONTRATOS EMVISL EN SAP R/3

XAJAX: una librería de AJAX para PHP (parte 1)

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Instituto Politécnico Nacional

Definir columnas de estilo periodístico

USO ACADÉMICO DE HOJAS ELECTRÓNICAS. Segunda Sesión

MANUAL COPIAS DE SEGURIDAD

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

GUIÓN EXCEL Objetivo Manejo del entorno para el desarrollo de pequeñas aplicaciones.

Transcripción:

USAR MYSQL EN PHP PHP tiene una librería de funciones nativas para conectarse a las base de datos MySQL. Por un lado reconoce la librería mysql y por otro mysqli. Se recomienda el uso de mysqli dado que las funciones que giran en torno a mysql serán eliminadas en próximas versiones de PHP como anuncian en su página oficial: Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro Cualquiera sea la librería que se implemente (nosotros usaremos mysqli), para iniciar una conexión MySQL es necesario indicarle a PHP 4 datos importantes: 1. Dónde se encuentra la base de datos: Es decir, en que servidor o IP. 2. Cuál es MI usuario de conexión al MySQL: Como todo sistema, tiene usuarios con más permisos que otros. El usuario principal el administrador total- es el usuario root. 3. Cuál es la clave de conexión de este usuario. 4. De todas las bases de datos que puede tener ese sistema, cuál deseo utilizar para hacer las consultas. Por lo general, la conexión al MySQL será única, salvo que me encuentre trabajando con múltiples servidores a la vez (por ejemplo: haciendo una transferencia en tiempo real de un servidor a otro). Para conectarnos a algún servidor MySQL, debemos usar la función mysqli_connect y pasar como argumentos de la función los cuatro datos: servidor, usuario, clave, base a usar. Esta función nos devuelve un RECURSO, el cual deberemos usar luego para hacer cualquier transacción con la base de datos (para que sepa en qué conexión de todas las que puedo tener, estoy trabajando). Nuestros datos de conexión en nuestra máquina local son los siguientes: $servidor = 'localhost'; // localhost como cadena de texto. $usuario = 'root'; // vamos a usar el usuario principal del mysql $clave = ''; // el wamp instala un mysql con usuario root pero con clave vacía, así que es una cadena de texto vacía. $base = 'BLOG'; // asumimos que en el MySQL ya hemos creado una base llamada BLOG con sus respectivas tablas. $conexion = mysqli_connect( $servidor, $usuario, $clave ); Podemos tener distintas conexiones en simultáneo, en distintos servidores o con distintos usuarios. Lo importante es tener presente que cada una se guarda en una variable distinta y usaremos esa variable para hacer todas las transacciones que correspondan a esa combinación de servidor-usuario-clave. Prof. Germán Rodríguez grodriguez@escueladavinci.net 1

Desde este momento cualquier llamada a MySQL que se realice sobre $conexion se va a realizar en la base BLOG dentro de LOCALHOST como ROOT sin clave. PRIMERAS CONSULTAS Para empezar a hacer consultas en MySQL debemos separar nuestra mente en dos instancias distintas: La consulta y el resultado. La consulta en sí que vamos a escribir, para PHP no significa nada, es solo una variable de tipo 'texto' (o String). Para que PHP nos devuelva de la base de datos un registro de datos (los resultados) debemos usar una serie de funciones que se encargarán de mandar esa cadena de texto a PHP y devolver un objeto (de tipo Object) que será lo que la base de datos nos devuelva en base a dicho string. El flujo de trabajo de PHP con respecto a una solicitud de datos al MySQL es el siguiente: 1. Se escribe una cadena de texto (fija o con el uso de variables) que será lo que pediremos. 2. Se le pide a PHP que mande esa cadena de texto a MySQL y devuelva un Objeto que representa TODAS las filas encontradas, este objeto no tiene formato y no tenemos todavía- manera de acceder a su contenido. 3. Se le pide a PHP que convierta CADA FILA de ese objeto en un array asociativo (del tipo $registro_actual['columna'] ) que devolverá como índice asociativo los nombres de todas las columnas que devolvió el MySQL. 4. Si hubiese más de un resultado (o registro) se le pide que recorra todos los contenidos hasta que no haya más datos. La ventaja de esta solicitud es que corta automáticamente cuando ya no quedan registros. Ejemplo: Consulta que devolverá DOS columnas (nombre y teléfono) de UN único registro: //Para PHP esto no es nada más que una cadena de texto. $consulta = "SELECT nombre, telefono FROM usuarios WHERE id = 3"; //La función mysqli_query manda una cadena de texto al MySQL y devuelve un objeto. $filas = mysqli_query( $conexion, $consulta ); echo $filas; // Object ID con un numero de objeto, tenemos que trabajarlo como Array. $columnas = mysqli_fetch_assoc( $filas ); //mysqli_fetch_assoc mueve el cursor a la próxima fila y devuelve las columnas pedidas a modo de array asociativo $columnas['columna_pedida'] ; echo $columnas ; //muestra Array echo $columnas['nombre'] ; // muestra el nombre del usuario con ID 3 echo $columnas['telefono'] ; // muestra el teléfono del usuario con ID 3 Prof. Germán Rodríguez grodriguez@escueladavinci.net 2

MYSQLI FETCH ASSOC La función mysqli_fetch_assoc recibe como único argumento un objeto que sea el resultado de un mysqli_query, y si ese objeto se pudo procesar, devolverá un array asociativo cuyos índices serán las columnas que haya solicitado el mysqli_query. Además, una vez que haya procesado los datos, moverá el cursor hacia abajo en el juego de registros (es decir a la próxima fila del query). Llegado el caso que se acaben las filas, devolverá un valor booleano false (y no un array). Por lo cual si pedimos DOS usuarios, podemos usar el mysqli_fetch_assoc para pedir los datos del primer usuario y volver a usarlo para pedir los datos del segundo usuario. $query = "SELECT nombre FROM usuarios WHERE ID=3 or ID=4"; //Pido el 3 y 4 $filas = mysqli_query($conexion, $query ); //Traigo el objeto $columnas = mysqli_fetch_assoc( $filas ); //Mueve el cursor a la fila 1 y trae las columnas como Array Asociativo var_dump( $columnas ); //Muestra en pantalla Array y el índice nombre de ese usuario echo $columnas['nombre']; //Muestra el nombre del usuario 1 $columnas = mysqli_fetch_assoc( $filas ); //Mueve el cursor a la fila 2 y trae las columnas como Array Asociativo var_dump( $columnas ); //Muestra en pantalla Array y el índice nombre de ese usuario echo $columnas['nombre']; //Muestra el nombre del usuario 2 $columnas = mysqli_fetch_assoc( $filas ); //Mueve el cursor a la fila 3 que no existe, porque solo pedimos 2 datos var_dump( $columnas ); //Muestra en pantalla false Claro está que este esquema es un tanto engorroso si se desean mostrar los últimos 100 productos de un catálogo online. Entonces si pudiésemos hacer más óptima esta consulta, podríamos mostrar TODOS los resultados sin importar si son 1, 100 o 5000. Eso lo podemos hacer aprovechando ese último valor que vimos en pantalla (el false). Prof. Germán Rodríguez grodriguez@escueladavinci.net 3

MOSTRAR MÚLTIPLES RESULTADOS Para mostrar un juego de resultados, independientemente de su cantidad de registros, debemos usar una combinación de las técnicas aprendidas. 1. En primera instancia le vamos a pedir al mysqli_fetch_assoc que nos devuelva una de dos opciones: o Array si hay registros- o false cuando se acabe el juego de datos-. 2. En segunda instancia, esa petición la vamos a utilizar como condición de un ciclo de repetición abierto, es decir que termine sólo cuando se acaben los datos. En este caso vamos a usar un while. Nuestra condición se limita a: mientras las filas digan que hay datos (que no sea false), repetir. $consulta = "SELECT nombre FROM usuarios"; //Como no pongo un filtro where, trae todos los que sean $filas = mysqli_query( $consulta, $conexion ) ; while( $columnas = mysqli_fetch_assoc( $filas ) ){ línea. } echo $columnas['nombre'].' <br />' ; //Muestro cada nombre y un salto de Analizando el código podemos darnos cuenta por qué esta estructura funciona perfectamente. 1. Tenemos la función mysqli_fetch_assoc como condición del while, y la guardamos en la variable $columnas. 2. Como las asignaciones se resuelven antes que la condición del while (por precedencia de operadores), PRIMERO se intenta convertir el objeto $filas en array. 3. Si puede convertirlo, devuelve un tipo de dato Array. 4. Para las evaluaciones booleanas, un array tiene contenido, así que se comporta como true. Se ejecuta el while. 5. Vuelve a intentar convertirse el objeto $filas en array. 6. En tanto y en cuanto devuelva un tipo de dato array, queda claro que seguirá moviéndose por todo el juego de filas. 7. Cuando ya no pueda convertir a array, va a devolver false. 8. Cuando un while encuentra un valor de tipo false, corta toda la repetición. Por ende, este ciclo de repetición va a funcionar con uno, mucho o ningún resultado (si MySQL no devuelve datos, el objeto no se puede convertir; en la primera vuelta da false, termina el ciclo sin hacer ninguna vuelta). Prof. Germán Rodríguez grodriguez@escueladavinci.net 4

OTRAS FUNCIONES IMPORTANTES Algunas funciones que van a ser útiles para la interacción con MySQL son: mysqli_error(); - si hubo un error en el formato de la consulta, indicará claramente el error (ejemplo: UNKNOWN COLUMN nombres - no existe la columna nombres) mysqli_num_rows( $filas ); - devuelve un valor numérico que representa la cantidad de filas que devolvió la consulta mysql, recibe como argumento el OBJETO que devolvió el query. mysqli_fetch_row( $filas ); - hace lo mismo que mysqli_fetch_assoc, pero no devuelve un array asociativo, sino uno numérico del tipo $columnas[0] etc. Recibe como argumento las filas. mysqli_insert_id( $conexion ); - Después de hacer una consulta de tipo INSERT INTO devuelve el ID que generó el MySQL para ese registro. Esta función es muy útil cuando se inserta un registro en una tabla y ese valor ingresado se tiene que asociar con otra tabla más (por ejemplo en una relación N-N). Recibe como argumento la conexión. mysqli_free_result( $filas ); - borra de la memoria los registros que devolvió una consulta MySQL anterior. mysqli_close( $conexion ); - cierra la conexión al MySQL para no seguir consumiendo recursos. Prof. Germán Rodríguez grodriguez@escueladavinci.net 5