PHP-Las bases de datos

Realmente, trabajar con PHP no tendría mucho sentido si no tuviéramos acceso a una base de datos. Actualmente, en Internet la de Bases de datos mas extendida, hasta hace tres días era MySQL, y ahora empieza a subir MariaDB. Sin embargo, a nivel de programación, no nos debería preocupar, y ahora vamos a empezar a ver como conectarnos a una base de datos y recuperar información desde PHP

Cuando instalasteis en vuestra maquina LAMP o XAMP según las instrucciones que os deje, instalasteis también el motor de base de datos MySQL o MariaDB, y un gestor sencillo y efectivo : phpMyAdmin

phpMyAdmin en una aplicación web desarrollada en PHP que nos permite acceder a nuestra base de datos para crear, modificar y borrar bases de datos, o tablas, así como visualizar, crear modificar y borrar campos de tablas

Para invocarla, solo debéis teclear en vuestro navegador:

http://localhost/phpmyadmin

phpmyadminy ya podéis indicar el usuario y la contraseña, que la primera vez, y para el acceso general, sera el usuario «root», y la contraseña que indicárais durante la instalación de MySQL

A continuación, podemos pulsar en la imagen que os indico a la izquiera, y nos aparece un formulario para crear una nueva base de datos.

En este caso, le he indicado como nombre «pruebasPHP» y he pulsado el botón de crear.

2014-09-30_21h05_42

automáticamente, nos conduce a una pantalla para que podamos crear nuestra primera tabla, y así lo hacemos, yo he creado la tabla «tb_usuarios» y le he indicado 6 campos

2014-09-30_21h13_03Al darle a continuar, nos aparece la pantalla para que indiquemos esos campos

2014-09-30_21h17_09

El primer campo (id) quiero que sea la clave de la tabla, y que se genere automáticamente por incremento, por lo que se lo debo indicar desplazándome a la derecha2014-09-30_21h18_34

y seleccionando «PRIMARY» y marcando AI (Autoincremento)

Cuando termine, le puedo indicar «Grabar», y nos creara la tabla. Si necesitamos mas campos, en lugar de «Grabar» le podemos indicar el numero de campos que queremos, y pulsar «Continuar»

 El siguiente paso será crear un usuario, para no tener que trabajar con «root», para ello, utilizando phpMyAdmin, podemos seleccionar el nombre de la base de datos, y a continuación, la pestaña «Privilegios»:

phpmyadmin_crearUsuarioEn la nueva pestaña marcamos»Agregar usuario»

phpmyadmin_agregar_usuario

Y en la nueva pantalla,

phpmyadmin_alta_usuariointroducimos los datos del usuario, En «Servidor», como solo quiero que ese usuario pueda trabajar local, indico «localhost». Eso no significa que no pueda conectarse remotamente, por ejemplo, con phpmyadmin, o en una aplicación web, pero…el programa que lance las ordenes sobre mysql, deberá estar instalado en la misma maquina que mysql. En la practica, que no puede utilizar MySQL En la practica, que no puede utilizar el servidor SQL desde otra maquina por medio de TCP/IP

Por ultimo, en la parte inferior tenemos la posibilidad de conceder a ese usuario permisos sobre TODAS las bases de datos de la instalación, y como no es necesario,no los marcamos.

mysql_dar_alta_usuario

solo pulsamos»Continuar» y phpMyAdmin crea el usuario

mysql_usuario_creadoSin embargo, veo que en la columna de «conceder» me ha quedado «no»…Eso significa que ese usuario no podría gestionar los permisos de otro usuario,y si queremos que pueda hacerlo, al final de la linea marcada, tengo «Editar privilegios», pulso encima, y me aparece la pantalla de gestión.

phpmyadmin_modificar_permisosHemos terminado con el usuario, si queréis probarlo, podéis abrir un terminal y tecleais

y accedereis al motor con el nuevo usuario.

2014-10-01_20h49_38en el prompt de «mysql»,podéis dar alguna ordenes como:

2014-10-01_20h53_24y tras comprobar que hemos podido conectamos a la base de datos «midb», hemos visto las tablas que tenia, y hemos visto también la estructura de la tabla, podemos cerrar la conexión mysql.

Creando una conexion con PHP

A continuación, vamos a establecer una conexión con nuestra base de datos desde PHP, para poder leer y grabar registros.

Lo primero de todo, dejamos escrito en algún sitio los datos de conexión que son :

  • el nombre del servidor,  que si esta en la misma maquina, sera localhost
  • el nombre de usuario. el nombre que hemos creado antes,:»pruebasPHP»
  • la contraseña de ese usuario, que es «pruebas»
  • el nombre de la base de datos a la que me quiero conectar, que es «midb»

2014-10-01_21h01_53

Como podéis imaginar, es muy delicado que alguien ajeno pueda acceder a esta información, por eso lo he dejado en un archivo aparte que he llamado «mysqli.inc.php» y lo ideal es que estuviera en un directorio que no fuera accesible desde la web

Para realizar la conexión:

include("mysqli.inc.php"); 
try{
 $strCon="mysql:host=$cfg_servidor;dbname=$cfg_basephp1";
 $conn = new PDO($strCon, $cfg_usuario, $cfg_password);
 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


}catch(PDOException $e){
 echo "strCon: ".$strCon."
";
 echo "cfg_usuario: ".$cfg_usuario."<br>";
 echo "cfg_password: ".$cfg_password."<br>";
 echo "ERROR: " . $e->getMessage();
}

Incluyo el modulo donde guarde los datos, y realizo la conexión, estando atento a los errores.

Si todo ha ido bien,puedo hacer la lectura, en este caso coy a leer de la tabla tb_usuarios el registro que tiene en la columna «usuario» el valor «miguel»

$sql = $conn->prepare('SELECT * FROM tb_usuarios WHERE usuario = :Nombre');
 $sql->execute(array('Nombre' => "miguel"));
 $resultado = $sql->fetchAll();
 echo "Lista de datos obtenidos<br>";
 foreach ($resultado as $row) {
      echo $row["id"];
      echo "-".$row["nombre"];
 }

Observad,que en el «prepare» dejo una orden sql con un parámetro «:Nombre». y al dar la orden de «execute», le indico por medio de un array el valor de los posibles parámetros que haya dejado pendiente.

En «$resultado» obtengo un array con todos los registros que cumplan la condición, y lo que hago a continuación, es enviarlos al navegador utilizando el bucle «foreach»

Aunque este código funciona, no deberíamos considerarlo definitivo, ya que nos obligaría a repetir un montón de lineas, en todas las paginas donde necesitaramos conectarnos.

El el siguiente articulo, describimos como podemos hacer un código para generar un objeto conexión,que podremos llamar en todas nuestras paginas, y que se encargara del dialogo con la Base de datos

Fecha máxima próxima publicación: 4/10/2014

 

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en PHP y MySQL/MariaDB. Guarda el enlace permanente.

3 respuestas a PHP-Las bases de datos

  1. Edgardo dijo:

    Exelente. 10 puntos

  2. gabriela gonzález dijo:

    gracias por tu tirmpo… ¡excelente explicación!!!

  3. juanse dijo:

    gracias por compartir tus conocimientos…..muy bueno…..

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.