Php n1 -Clase6 Mysql

Preview:

DESCRIPTION

Mysql - php

Citation preview

PHP – Nivel I – Clase 6PHP – Nivel I – Clase 6

Prof. Cristian Sanchez FloresProf. Cristian Sanchez Flores

MySQLMySQL

Que es MySQL…???Que es MySQL…???

MySQL es la base de datos de codigo abierto más popular del mundo. MySQL es un sistema de administración de base de datos relacional. Se trata de un programa capaz de almacenar una enorme cantidad de datos de gran variedad y de distribuirlos para cubrir las necesidades de cualquier tipo de organización.

MySQL es la base de datos de codigo abierto más popular del mundo. MySQL es un sistema de administración de base de datos relacional. Se trata de un programa capaz de almacenar una enorme cantidad de datos de gran variedad y de distribuirlos para cubrir las necesidades de cualquier tipo de organización.

Codigo AbiertoCodigo Abierto

Codigo abierto 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 código fuente y cambiarlo de acuerdo a sus necesidades. MySQL usa el GPL de la GNU, para definir lo que se puede hacer con el software en diferentes situaciones.

Codigo abierto 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 código fuente y cambiarlo de acuerdo a sus necesidades. MySQL usa el GPL de la GNU, para definir lo que se puede hacer con el software en diferentes situaciones.

Que es una Base de DatosQue es una Base de Datos

Una Base de Datos, en su definicion mas sencilla, es una colección de archivos relacionados.

Una Base de Datos, en su definicion mas sencilla, es una colección de archivos relacionados.

Instalación MySQLInstalación MySQL

Prof. Cristian Sanchez FloresProf. Cristian Sanchez Flores

Instalar MySQLInstalar MySQLDescargar los archivos necesarios, descomprima el archivo zip MySQL en un directorio TemporalEjecutar el programa Setup.exe, el instalador es un asistente InstallShiedlSeleccionar Instalación TipicaEspecificar donde quiere Instalar MySQL, aunque se recomienda que sea en c:\mysql

Descargar los archivos necesarios, descomprima el archivo zip MySQL en un directorio TemporalEjecutar el programa Setup.exe, el instalador es un asistente InstallShiedlSeleccionar Instalación TipicaEspecificar donde quiere Instalar MySQL, aunque se recomienda que sea en c:\mysql

Configurar Servicios de MySQLConfigurar Servicios de MySQL

Pude instalar el servidor MySQL como servicio si escribe lo siguiente en la linea de comandos de Windows:

cd c:\mysql\bin mysqld-nt –install

Obtendra la siguiente respuesta

Service successfully installed

Pude instalar el servidor MySQL como servicio si escribe lo siguiente en la linea de comandos de Windows:

cd c:\mysql\bin mysqld-nt –install

Obtendra la siguiente respuesta

Service successfully installed

Iniciando Servicios de MySQLIniciando Servicios de MySQL

Ya puede iniciar y detener el servicio MySQL desde la linea de comandos con:

NET START mysqlNET STOP mysql

Ya puede iniciar y detener el servicio MySQL desde la linea de comandos con:

NET START mysqlNET STOP mysql

Servicios de MySQLServicios de MySQL

Comprobando su FuncionalidadComprobando su Funcionalidad• Para probar si MySQL funciona o no,

puede ejecutar el siguiente comando:

c:\mysql\binn\mysqlshow

• Para probar si MySQL funciona o no, puede ejecutar el siguiente comando:

c:\mysql\binn\mysqlshow

Conexión a Una Base de DatosConexión a Una Base de Datos

El equipo en el que se ejecuta MySQL y que almacena los datos se denomina Servidor MySQL. Para establecer una conexión a este servidor, tipeamos desde prompt lo siguiente:

C:\mysql\bin\mysql –u root -p

El equipo en el que se ejecuta MySQL y que almacena los datos se denomina Servidor MySQL. Para establecer una conexión a este servidor, tipeamos desde prompt lo siguiente:

C:\mysql\bin\mysql –u root -p

ConexionConexion

Cambiar ContraseñaCambiar Contraseña

Necesitamos cambiar la contraseña del administrador que por defecto es vacia para ello tipeamos lo siguiente:

mysql> SET PASSWORD=PASSWORD(‘uni’);

Necesitamos cambiar la contraseña del administrador que por defecto es vacia para ello tipeamos lo siguiente:

mysql> SET PASSWORD=PASSWORD(‘uni’);

Cambiar ContraseñaCambiar Contraseña

Creando Base de DatosCreando Base de Datos

Asocioando Usuario a BDAsocioando Usuario a BD

Conexión con el Usuario SistemaConexión con el Usuario Sistema

Creando TablasCreando Tablas

Creando TablasCreando Tablas

Show TablesShow Tables

DescribeDescribe

Privilegios de MySQLPrivilegios de MySQL

Una de las mejores funciones de MySQL es su avanzado sistema de privilegios.Un privilegio es el derecho a realizar una accion dada sobre un determinado objeto y se asocia a un usuario concreto.Al crear un usuario dentro de MySQL se le concede un conjunto de privilegios en los que se especifica lo que puede y no puede hacer dentro del sistema.

Una de las mejores funciones de MySQL es su avanzado sistema de privilegios.Un privilegio es el derecho a realizar una accion dada sobre un determinado objeto y se asocia a un usuario concreto.Al crear un usuario dentro de MySQL se le concede un conjunto de privilegios en los que se especifica lo que puede y no puede hacer dentro del sistema.

Privilegios MySQLPrivilegios MySQL

Los comandos GRANT y REVOKE se utiliza para conceder y retirar los derechos a los usuarios de MySQL en 4 niveles de privilegios, que son:1. Global2. Base de Datos.3. Tabla.4. Columna

Los comandos GRANT y REVOKE se utiliza para conceder y retirar los derechos a los usuarios de MySQL en 4 niveles de privilegios, que son:1. Global2. Base de Datos.3. Tabla.4. Columna

Comando GRANTComando GRANT

El Comando GRANT se utiliza para crear usuarios y concederle los privilegios.Sintaxis

GRANT privilegios [columna]ON elementoTO nom_usuario [IDENTIFIED BY ‘contrase’]

El Comando GRANT se utiliza para crear usuarios y concederle los privilegios.Sintaxis

GRANT privilegios [columna]ON elementoTO nom_usuario [IDENTIFIED BY ‘contrase’]

Tipos de PrivilegiosTipos de Privilegios

Privilegio Aplicable aSELECT Tablas, columnasINSERT Tablas, columnasUPDATE Tablas, columnasDELETE TablasINDEX TablasALTER TablasCREATE Base de Datos y

TablasDROP Base de Datos y

Tablas

Comando REVOKEComando REVOKE

Este comando es opuesto al comando GRANT, se utiliza para quitar privilegios de un usuario.Sintaxis

REVOKE privilegios ([columnas])ON elementoFROM nombre_usuario

Este comando es opuesto al comando GRANT, se utiliza para quitar privilegios de un usuario.Sintaxis

REVOKE privilegios ([columnas])ON elementoFROM nombre_usuario

EjemplosEjemplos

Para configurar un administrador:

mysql> grant all -> on *

-> to coco identified by ‘uni’

-> with grant option ;

Para configurar un administrador:

mysql> grant all -> on *

-> to coco identified by ‘uni’

-> with grant option ;

EjemplosEjemplos

EjemplosEjemplos

Ahora vamos a crear una Base de Datos llamada LibrosAhora vamos a crear una Base de Datos llamada Libros

mysql> create database Libros;

EjemplosEjemplos

EjemplosEjemplosSeguidamente vamos a crear un usuario Pablo sin privilegiosSeguidamente vamos a crear un usuario Pablo sin privilegios

Ejemplos Ejemplos Ahora le concedemos los privilegios adecuadosAhora le concedemos los privilegios adecuados

Ejemplo Ejemplo Ahora podemos reducir sus privilegiosAhora podemos reducir sus privilegios

EjemploEjemploAhora si ya no necesito que ese usuario no utilice la Base de DatosAhora si ya no necesito que ese usuario no utilice la Base de Datos

EjemploEjemploAhora vamos a crear un usuario para nuestra pagina WebAhora vamos a crear un usuario para nuestra pagina Web

Ejemplo - LibrosEjemplo - LibrosConetarse a la Base de Datos LibrosConetarse a la Base de Datos Libros

Creando TablasCreando TablasTenemos un archivo libros.sql cargamos la estructuraTenemos un archivo libros.sql cargamos la estructura

InsercionInsercion

InsercionInsercion

Insertando LibrosInsertando Libros

Visualizando RegistrosVisualizando Registros

Visualizando RegistrosVisualizando Registros

OperadoresOperadores

= > <

>= <= !=

IS NOT NULL IS NULL BETWEEN

IN NOT IN LIKE

NOT LIKE

Combinaciones 2 TablasCombinaciones 2 Tablas

Combinando TablasCombinando Tablas

select customers.customerid, customers.name,

orders.orderidfrom customers inner join orderson customers.customerid = orders.customerid;

select customers.customerid, customers.name,

orders.orderidfrom customers inner join orderson customers.customerid = orders.customerid;

Combinando TablasCombinando Tablas

select c.customerid, c.name, o.orderidfrom customers as c, orders owhere c.customerid =

o.customerid;

select c.customerid, c.name, o.orderidfrom customers as c, orders owhere c.customerid =

o.customerid;

Demo – Buscar.htmlDemo – Buscar.html<html>

<head> <title>Book-O-Rama Catalogo Busqueda</title></head><body> <h1>Book-O-Rama Catalogo Busqueda</h1> <form action="resultado.php" method="post"> Escoja el Tipo de Busqueda:<br /> <select name="tipobusqueda"> <option value="author">Author</option> <option value="title">Titulo</option> <option value="isbn">Codigo</option> </select> <br /> Ingrese Texto de Busqueda:<br /> <input name="buscatext" type="text" size="20"> <br /> <input type="submit" value="Buscar"> </form></body>

</html>

<html><head> <title>Book-O-Rama Catalogo Busqueda</title></head><body> <h1>Book-O-Rama Catalogo Busqueda</h1> <form action="resultado.php" method="post"> Escoja el Tipo de Busqueda:<br /> <select name="tipobusqueda"> <option value="author">Author</option> <option value="title">Titulo</option> <option value="isbn">Codigo</option> </select> <br /> Ingrese Texto de Busqueda:<br /> <input name="buscatext" type="text" size="20"> <br /> <input type="submit" value="Buscar"> </form></body>

</html>

Consultar una Base de Datos desde la WebConsultar una Base de Datos desde la Web

Para realizar una consulta desde la web se sigue los siguientes pasos:

1. Comprobar y filtrar los datos procedentes del usuario.

2. Configurar una conexión a la Base de Datos pertinente.

3. Consultar la Base de Datos.4. Recuperar los Resultados.5. Presentar los resultados al usuario.

Para realizar una consulta desde la web se sigue los siguientes pasos:

1. Comprobar y filtrar los datos procedentes del usuario.

2. Configurar una conexión a la Base de Datos pertinente.

3. Consultar la Base de Datos.4. Recuperar los Resultados.5. Presentar los resultados al usuario.

Comprobar y Filtrar Datos EntrantesComprobar y Filtrar Datos Entrantes

En primer lugar vamos a eliminar los espacios en blanco que pudiera haber introducido el usuario de manera involuntaria al principio y al final del termino de busqueda.

$buscatext= trim($buscatext);

En primer lugar vamos a eliminar los espacios en blanco que pudiera haber introducido el usuario de manera involuntaria al principio y al final del termino de busqueda.

$buscatext= trim($buscatext);

Comprobar y Filtrar Datos EntrantesComprobar y Filtrar Datos Entrantes

Ahora tenemos que verificar que el usuario ha introducido un texto de busqueda y un tipo de busqueda.

if (!$busquedatipo || !$buscatext) {

echo 'Usted tiene que ingresar y escoger en Busqueda.';

exit; }

Ahora tenemos que verificar que el usuario ha introducido un texto de busqueda y un tipo de busqueda.

if (!$busquedatipo || !$buscatext) {

echo 'Usted tiene que ingresar y escoger en Busqueda.';

exit; }

Configurar una ConexionConfigurar una Conexion

Para establecer la Conexión a La base de Datos podemos utilizar cualquier de las 2 instrucciones:

@ $db = new mysqli('localhost', 'root', 'uni', 'libros');

@ $db = mysqli_connect('localhost', 'root', 'uni', 'libros');

Para establecer la Conexión a La base de Datos podemos utilizar cualquier de las 2 instrucciones:

@ $db = new mysqli('localhost', 'root', 'uni', 'libros');

@ $db = mysqli_connect('localhost', 'root', 'uni', 'libros');

Configurar una ConexionConfigurar una Conexion

Ahora vamos a comprobar si la coneccion se ha realizado con éxito para ello utilizaremos lo siguiente:

if (mysqli_connect_errno()) {

echo 'Error: No puede conectarse a la Base de Datos.';

exit; }

Ahora vamos a comprobar si la coneccion se ha realizado con éxito para ello utilizaremos lo siguiente:

if (mysqli_connect_errno()) {

echo 'Error: No puede conectarse a la Base de Datos.';

exit; }

Consultar una Base de DatosConsultar una Base de Datos

Para realizar la consulta primero vamos a almacenar la instrucción de la consulta en una variable.

$query = "select * from books where ".$tipobusqueda." like '%".$buscatext."%'“ ;

Para realizar la consulta primero vamos a almacenar la instrucción de la consulta en una variable.

$query = "select * from books where ".$tipobusqueda." like '%".$buscatext."%'“ ;

Consultar una Base de DatosConsultar una Base de Datos

Ahora procedemos a ejecutar la consulta la podemos realizar de 2 maneras:

$result = $db->query($query);

$result = mysqli_query($db, $query);

Ahora procedemos a ejecutar la consulta la podemos realizar de 2 maneras:

$result = $db->query($query);

$result = mysqli_query($db, $query);

Recuperar Resultados de ConsultaRecuperar Resultados de Consulta

Ahora si deseamos que nos muestre la cantidad de registros devueltos, hay 2 formas:

$num_results = $result->num_rows;

$num_results = mysqli_num_rows($result);

Ahora si deseamos que nos muestre la cantidad de registros devueltos, hay 2 formas:

$num_results = $result->num_rows;

$num_results = mysqli_num_rows($result);

Recuperar Resultados de ConsultaRecuperar Resultados de Consulta

Ahora como sabemos cuando registros existen en este query, podemos trabajarlo con un bucle.for ($i=0; $i <$num_results; $i++) {

// procese los resultados

}

Ahora como sabemos cuando registros existen en este query, podemos trabajarlo con un bucle.for ($i=0; $i <$num_results; $i++) {

// procese los resultados

}

Recuperar Resultados de ConsultaRecuperar Resultados de Consulta

Ahora para leer la información se utiliza la funcion fetch_assoc() o mysqli_fetch_assoc(), esta funcion toma cada fila del conjunto de resultados y devuelve la fila como una matriz, con cada clave en forma de nombre de atributo y cada valor con su valor correspondiente en la matriz.

Ahora para leer la información se utiliza la funcion fetch_assoc() o mysqli_fetch_assoc(), esta funcion toma cada fila del conjunto de resultados y devuelve la fila como una matriz, con cada clave en forma de nombre de atributo y cada valor con su valor correspondiente en la matriz.

Recuperar Resultados de ConsultaRecuperar Resultados de Consulta

Para ello vamos a utilizar cualquiera de las 2 formas

$row = $result->fetch_assoc();

$row = mysqli_fetch_assoc($result);

Para ello vamos a utilizar cualquiera de las 2 formas

$row = $result->fetch_assoc();

$row = mysqli_fetch_assoc($result);

Recuperar Resultados de ConsultaRecuperar Resultados de Consulta

Dada la matriz asociativa $row, podemos recorrer cada campo y mostrarlos adecuadamente.Para ello vamos a utilizar una funcion llamada stripslashes(), para limpiar el valos antes de mostrarlo.

Dada la matriz asociativa $row, podemos recorrer cada campo y mostrarlos adecuadamente.Para ello vamos a utilizar una funcion llamada stripslashes(), para limpiar el valos antes de mostrarlo.

Recuperar Resultados de ConsultaRecuperar Resultados de Consultaecho '<p><strong>'.($i+1).'. Titulo: ';echo stripslashes($row['title']);echo '</strong><br />Autor: ';echo stripslashes($row['author']);echo '<br />Codigo: ';echo stripslashes($row['isbn']);echo '<br />Precio: ';echo stripslashes($row['price']);echo '</p>';

echo '<p><strong>'.($i+1).'. Titulo: ';echo stripslashes($row['title']);echo '</strong><br />Autor: ';echo stripslashes($row['author']);echo '<br />Codigo: ';echo stripslashes($row['isbn']);echo '<br />Precio: ';echo stripslashes($row['price']);echo '</p>';

Desconectar un Base de DatosDesconectar un Base de Datos

Para liberar un conjunto de resultados se invoca a cualquieral de las siguientes lineas:

$result->free();

mysqli_free_result($result);

Para liberar un conjunto de resultados se invoca a cualquieral de las siguientes lineas:

$result->free();

mysqli_free_result($result);

Desconectar un Base de DatosDesconectar un Base de Datos

Seguidamente se procede a desconectar o cerrar la conexión a la base de datos, para ello puede ser cualquiera de las 2 formas

$db->close();

mysqli_close($db);

Seguidamente se procede a desconectar o cerrar la conexión a la base de datos, para ello puede ser cualquiera de las 2 formas

$db->close();

mysqli_close($db);

Demo – Resultado.phpDemo – Resultado.php<html><head> <title>Book-O-Rama Resultado de Busqueda</title></head><body><h1>Book-O-Rama Resultado de Busqueda</h1><?php $tipobusqueda=$_POST['tipobusqueda']; $buscatext=$_POST['buscatext']; $buscatext= trim($buscatext); if (!$tipobusqueda || !$buscatext) { echo 'Usted tiene que ingresar y escoger en Busqueda.'; exit; } @ $db = new mysqli('localhost', 'root', 'uni', 'libros'); if (mysqli_connect_errno()) { echo 'Error: No puede conectarse a la Base de Datos.'; exit; } $query = "select * from books where ".$tipobusqueda." like '%".$buscatext."%'";/* $result = $db->query($query); $num_results = $result->num_rows;*/$result = mysqli_query($db, $query); $num_results = mysqli_num_rows($result); echo '<p>Numero de Libros Encontrados: '.$num_results.'</p>'; for ($i=0; $i <$num_results; $i++) { $row = $result->fetch_assoc(); echo '<p><strong>'.($i+1).'. Titulo: '; echo stripslashes($row['title']); echo '</strong><br />Autor: '; echo stripslashes($row['author']); echo '<br />Codigo: '; echo stripslashes($row['isbn']); echo '<br />Precio: '; echo stripslashes($row['price']); echo '</p>'; } $result->free(); $db->close(); ?></body></html>

<html><head> <title>Book-O-Rama Resultado de Busqueda</title></head><body><h1>Book-O-Rama Resultado de Busqueda</h1><?php $tipobusqueda=$_POST['tipobusqueda']; $buscatext=$_POST['buscatext']; $buscatext= trim($buscatext); if (!$tipobusqueda || !$buscatext) { echo 'Usted tiene que ingresar y escoger en Busqueda.'; exit; } @ $db = new mysqli('localhost', 'root', 'uni', 'libros'); if (mysqli_connect_errno()) { echo 'Error: No puede conectarse a la Base de Datos.'; exit; } $query = "select * from books where ".$tipobusqueda." like '%".$buscatext."%'";/* $result = $db->query($query); $num_results = $result->num_rows;*/$result = mysqli_query($db, $query); $num_results = mysqli_num_rows($result); echo '<p>Numero de Libros Encontrados: '.$num_results.'</p>'; for ($i=0; $i <$num_results; $i++) { $row = $result->fetch_assoc(); echo '<p><strong>'.($i+1).'. Titulo: '; echo stripslashes($row['title']); echo '</strong><br />Autor: '; echo stripslashes($row['author']); echo '<br />Codigo: '; echo stripslashes($row['isbn']); echo '<br />Precio: '; echo stripslashes($row['price']); echo '</p>'; } $result->free(); $db->close(); ?></body></html>

Demo - Nuevolibro.htmlDemo - Nuevolibro.html<html>

<head> <title>Book-O-Rama - Ingrese Nuevo Libro</title></head><body> <h1>Book-O-Rama - Ingrese Nuevo Libro</h1> <form action="inserta_libro.php" method="post"> <table border="0"> <tr> <td>Codigo</td> <td><input type="text" name="isbn" maxlength="13" size="13"></td> </tr> <tr> <td>Autor</td> <td> <input type="text" name="author" maxlength="30" size="30"></td> </tr> <tr> <td>Titulo</td> <td> <input type="text" name="title" maxlength="60" size="30"></td> </tr> <tr> <td>Precio $</td> <td><input type="text" name="price" maxlength="7" size="7"></td> </tr> <tr> <td colspan="2"><input type="submit" value="Insertar"></td> </tr> </table> </form></body></html>

<html><head> <title>Book-O-Rama - Ingrese Nuevo Libro</title></head><body> <h1>Book-O-Rama - Ingrese Nuevo Libro</h1> <form action="inserta_libro.php" method="post"> <table border="0"> <tr> <td>Codigo</td> <td><input type="text" name="isbn" maxlength="13" size="13"></td> </tr> <tr> <td>Autor</td> <td> <input type="text" name="author" maxlength="30" size="30"></td> </tr> <tr> <td>Titulo</td> <td> <input type="text" name="title" maxlength="60" size="30"></td> </tr> <tr> <td>Precio $</td> <td><input type="text" name="price" maxlength="7" size="7"></td> </tr> <tr> <td colspan="2"><input type="submit" value="Insertar"></td> </tr> </table> </form></body></html>

Demo – Insertalibro.phpDemo – Insertalibro.php<html><head> <title>Book-O-Rama Resultado de la Insercion de Libro</title></head><body><h1>Book-O-Rama Resultado de la Insercion de Libro</h1><?php $isbn=$_POST['isbn']; $author=$_POST['author']; $title=$_POST['title']; $price=$_POST['price']; if (!$isbn || !$author || !$title || !$price) { echo 'usted tiene que ingresar todos los campos.<br />'; exit; } @ $db = new mysqli('localhost', 'root', 'uni', 'libros'); if (mysqli_connect_errno()) { echo 'Error: No puede conectarse a la Base de Datos.'; exit; } $query = "insert into books values ('".$isbn."', '".$author."', '".$title."', '".$price."')"; $result = $db->query($query); if ($result) echo $db->affected_rows.' libros insertados en la base de datos.'; $db->close();?></body></html>

<html><head> <title>Book-O-Rama Resultado de la Insercion de Libro</title></head><body><h1>Book-O-Rama Resultado de la Insercion de Libro</h1><?php $isbn=$_POST['isbn']; $author=$_POST['author']; $title=$_POST['title']; $price=$_POST['price']; if (!$isbn || !$author || !$title || !$price) { echo 'usted tiene que ingresar todos los campos.<br />'; exit; } @ $db = new mysqli('localhost', 'root', 'uni', 'libros'); if (mysqli_connect_errno()) { echo 'Error: No puede conectarse a la Base de Datos.'; exit; } $query = "insert into books values ('".$isbn."', '".$author."', '".$title."', '".$price."')"; $result = $db->query($query); if ($result) echo $db->affected_rows.' libros insertados en la base de datos.'; $db->close();?></body></html>