JAVA – PHP – MySQL: IV Consultas e inserción de datos en MySQL con PHP

JAVA – PHP – MySQL: IV Consultas e inserción de datos en MySQL con PHP
Portada4

!Hola a todos!, En este cuarto tutorial sobre JAVA - PHP - MYSQL vamos a repasar sentencias básicas de SQL para insertar o consultar datos de una base de datos. Una vez hayamos repasado las sentencias más usadas vamos a aplicar estos conocimientos con la base de datos ejemplo de esta serie de tutoriales (GeekyTheoryBD) que creamos en el segundo tutorial de la serie JAVA - PHP - MYSQL. Antes de empezar vamos a ver el índice de esta serie de tutoriales así como lo que pretendemos aprender.

  1. JAVA – PHP – MySQL: I Introducción
  2. JAVA – PHP – MySQL: II Creación de una base de datos en MySQL
  3. JAVA – PHP – MySQL: III Crear una conexión con la base de datos en PHP
  4. JAVA – PHP – MySQL: IV Consultas Básicas e inserción de datos en PHP
  5. JAVA – PHP – MySQL: V Insertar datos en MySQL desde JAVA con PHP
  6. JAVA – PHP – MySQL: VI Obtener datos de MySQL en JAVA con PHP

Los objetivos que nos proponemos con esta serie de tutoriales son los siguientes:

MySQL

  • Aprender a crear una base de datos en MySQL.

PHP

  • Aprender a insertar datos en nuestra base de datos.
  • Aprender a mostrar datos de nuestra base de datos.
  • Consolidar los conocimientos aprendidos en la serie de tutoriales JSON.
  • Mostrar los datos introducidos en la base de datos en pantalla.

JAVA

  • Crear JSON a partir de los datos introducidos por el usuario.
  • Enviar JSON vía GET en JAVA.
  • Enviar JSON vía POST en JAVA.
  • Obtener un JSON generado en PHP.

Para quien no lo sepa el lenguaje estándar para comunicarse con una base de datos es un lenguaje sencillo y "casi" universal llamado SQL. Este lenguaje dispone de una sencilla sintaxis para comunicarse con la base de datos que tengamos disponible. Algunas de las sentencias básicas que vamos a usar en esta serie de tutoriales son las siguientes:

  • Obtener todos los datos de la tabla "tabla".

SELECT * FROM tabla;

  • Obtener todos los datos de las columnas llamadas "columna1" y "columna2" pertenecientes a la tabla "tabla".

SELECT columna1,columna2 FROM tabla;

  • Obtener todos los datos de la tabla cuando columna 1 es igual al parametro que queramos.

SELECT * FROM tabla WHERE columna1='lo que queramos';

  • Obtener todos los datos de la tabla cuando columna 1 es igual al parametro que queramos y columna 2 es igual a lo que queramos.

SELECT * FROM tabla WHERE columna1='lo que queramos' and columna2='lo que queramos2';

  • Obtener todos los datos de la tabla cuando columna 1 es igual al parametro que queramos o columna 2 es igual a lo que queramos.

SELECT * FROM tabla WHERE columna1='lo que queramos' or columna2='lo que queramos2';

  • Obtener los datos de una tabla ordenados en orden  ascendente por un campo dado.

SELECT * FROM tabla ORDER BY columna1 ASC;

  • Obtener los datos de una tabla ordenados en orden  descendente por un campo dado.

SELECT * FROM tabla ORDER BY columna1 DESC;

  • Insertar una nueva fila en una tabla.

INSERT INTO tabla (columna1,columna2,columna3) values (123,'geekytheory',5469);

  • Modificar una nueva fila en una tabla.

UPDATE tabla SET columna1="lo que quiera cambiar" WHERE columna1 ="condición/ID";Para más información sobre sentencias SQL visitar el siguiente enlace: w3school A tener en cuenta los siguientes puntos:

  • Los campos cuyo tipo de datos es de tipo VARCHAR van siempre entre comillas cuando hacemos un WHERE mientras que los datos tipo INT no.
  • Tener cuidado con la codificación de la base de datos, ya que algunas veces hay problemas cuando queremos introducir datos de tipo VARCHAR con tildes.

Una consulta, inserción o modificación de algún dato de nuestra base de datos es ejecutada en tres puntos:

  • Conexión de la base de datos
  • Ejecución (y obtención de datos) enviando una "query" (sentencia) SQL
  • Desconexión de la  base de datos.

Usando como referencia el guion anterior y la base de datos (GeekyTheoryBD) que estamos usando en esta serie de tutoriales JAVA - PHP - MySQL vamos crear una clase que gestione la tabla "usuarios". Las funciones que incluiremos en la clase "Usuarios" para gestionar la tabla "usuarios" son las siguientes:

  • conectarBD
  • desconectarBD
  • getArraySQL
  • createUser
  • getAllInfo
  • getNombre
  • getApellidos
  • getEmail

El siguiente código comentado y explicado muestra la implementación de la clase "usuarios": <?php class Usuarios{ public $id_user = 0 ; //Función que crea y devuelve un objeto de conexión a la base de datos y chequea el estado de la misma. function conectarBD(){ $server = "localhost"; $usuario = "root"; $pass = ""; $BD = "GeekyTheoryBD"; //variable que guarda la conexión de la base de datos $conexion = mysqli_connect($server, $usuario, $pass, $BD); //Comprobamos si la conexión ha tenido exito if(!$conexion){ echo 'Ha sucedido un error inexperado en la conexion de la base de datos<br>'; } //devolvemos el objeto de conexión para usarlo en las consultas return $conexion; } /*Desconectar la conexion a la base de datos*/ function desconectarBD($conexion){ //Cierra la conexión y guarda el estado de la operación en una variable $close = mysqli_close($conexion); //Comprobamos si se ha cerrado la conexión correctamente if(!$close){ echo 'Ha sucedido un error inexperado en la desconexion de la base de datos<br>'; } //devuelve el estado del cierre de conexión return $close; } //Devuelve un array multidimensional con el resultado de la consulta function getArraySQL($sql){ //Creamos la conexión $conexion = $this->conectarBD(); //generamos la consulta if(!$result = mysqli_query($conexion, $sql)) die(); $rawdata = array(); //guardamos en un array multidimensional todos los datos de la consulta $i=0; while($row = mysqli_fetch_array($result)) { //guardamos en rawdata todos los vectores/filas que nos devuelve la consulta $rawdata[$i] = $row; $i++; } //Cerramos la base de datos $this->desconectarBD($conexion); //devolvemos rawdata return $rawdata; } //inserta en la base de datos un nuevo registro en la tabla usuarios function createUser($nombre,$apellidos,$email){ //creamos la conexión $conexion = $this->conectarBD(); //Escribimos la sentencia sql necesaria respetando los tipos de datos $sql = "insert into usuarios (nombre,apellidos,email) values ('".$nombre."','".$apellidos."','".$email."')"; //hacemos la consulta y la comprobamos $consulta = mysqli_query($conexion,$sql); if(!$consulta){ echo "No se ha podido insertar una nueva Medalla en la base de datos<br><br>".mysqli_error($conexion); } //Desconectamos la base de datos $this->desconectarBD($conexion); //devolvemos el resultado de la consulta (true o false) return $consulta; } //obtiene toda la informacion de la base de datos function getAllInfo(){ //Creamos la consulta $sql = "SELECT * FROM usuarios;"; //obtenemos el array con toda la información return $this->getArraySQL($sql); } //obtiene el nombre del usuario cuyo ID user es el que se le asigna al objeto de la clase function getNombre(){ //Creamos la consulta $sql = "SELECT nombre FROM usuarios WHERE id_user = ".$this->id_user.";"; //obtenemos el array $data = $this->getArraySQL($sql); //obtenemos el primer elemento, ya que así no tenemos que extraerlo posteriormente return $data[0][0]; } //obtiene los apellidos del usuario cuyo ID user es el que se le asigna al objeto de la clase function getApellidos(){ //Creamos la consulta $sql = "SELECT apellidos FROM usuarios WHERE id_user = ".$this->id_user.";"; //obtenemos el array $data = $this->getArraySQL($sql); //obtenemos el primer elemento, ya que así no tenemos que extraerlo posteriormente return $data[0][0]; } //obtiene el mail del usuario cuyo ID user es el que se le asigna al objeto de la clase function getEmail(){ //Creamos la consulta $sql = "SELECT email FROM usuarios WHERE id_user = ".$this->id_user.";"; //obtenemos el array $data = $this->getArraySQL($sql); //obtenemos el primer elemento, ya que así no tenemos que extraerlo posteriormente return $data[0][0]; } } //Para hacer un ejemplo de funcionamiento vamos a realizar los siguientes pasos: // //1º Vamos a crear un objeto de la clase Usuarios //2º Vamos a crear un nuevo usuario en la base de datos //3º Vamos a obtener su Nombre, Apellido y email del usuario que acabamos de insertar en la base de datos //--Creamos un objeto de la clase Usuarios $userObject = new Usuarios(); //Insertamos un nuevo usuario en la base de datos $userObject->createUser("Alejandro","Esquiva","alejandro@geekytheory.com"); //Obtenemos los datos del usuario que acabamos de mostrar, como es el primer //elemento de la base de datos vamos a suponer que tiene como ID el número 1 //En caso de que no fuese así deberiamos crearnos una función para obtener //el último id, esta función la dejo como ejercicio para aquellos que quiera practicar $userObject->id_user=1; //Obtenemos el nombre y lo mostramos por pantalla echo $userObject->getNombre()."<br>"; //Obtenemos los apellidos y lo mostramos por pantalla echo $userObject->getApellidos()."<br>"; //Obtenemos el nombre y lo mostramos por pantalla echo $userObject->getEmail()."<br>"; ?> Podemos observar en el código que hemos usado funciones ya usadas en otros tutoriales como por ejemplo las funciones conectarBD/desconectarBD del tutorial anterior. Si ejecutamos el código anterior usando nuestro servidor local o hosting privado veremos que hemos insertado correctamente un usuario en la tabla "usuarios" de la base de datos.

Captura

A su vez vemos que una vez que hemos insertado el usuario en la base de datos, podemos obtener sus datos haciendo consultas a ella:

Captura1

Y esto es todo en este tutorial, si queremos realizar consultas personalizadas se pueden usar el esquema que he ido siguiendo en este tutorial. En el siguiente tutorial de JAVA - PHP - MySQL vamos a ver como insertar datos en la tabla "usuarios" a través una aplicación en JAVA con ayuda de PHP. No olvides de compartir este tutorial en vuestras redes sociales! Saludos!

Podéis descargar el código en el siguiente repositorio de github.

github-logo