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
y 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.
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
Al darle a continuar, nos aparece la pantalla para que indiquemos esos campos
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 derecha
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»:
En la nueva pestaña marcamos»Agregar usuario»
Y en la nueva pantalla,
introducimos 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.
solo pulsamos»Continuar» y phpMyAdmin crea el usuario
Sin 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.
Hemos terminado con el usuario, si queréis probarlo, podéis abrir un terminal y tecleais
y accedereis al motor con el nuevo usuario.
en el prompt de «mysql»,podéis dar alguna ordenes como:
y 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»
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
Relacionado
Descubre más desde Recursos para formacion
Suscríbete y recibe las últimas entradas en tu correo electrónico.
12 comentarios
Exelente. 10 puntos
gracias por tu tirmpo… ¡excelente explicación!!!
gracias por compartir tus conocimientos…..muy bueno…..