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

!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.

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:

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.