PHP OO: PHP y PDO: Insertando Registros en una tabla de MySQL con PHP y PDO

En este Artículo muestro un ejemplo paso a paso de cómo insertar registros desde un formulário de forma segura y con Sentencias Preparadas (Prepared Statements); para evitar inyecciones maliciosas a MySQL, todo esto utlizando la extensión PDO de la manera correcta.
Compartir:

FormInsertPHP: Insertando Valores en una Tabla 'usuario' de la base de datos 'conexionpdo' de forma segura

Download FormInsertPHP
Primer Paso: En Primer lugar necesitaremos crear la Base de Datos 'conexionpdo' y una tabla a la que llamaremos 'usuario'. Veamos como hacerlo:

Creando Base de datos conexionpdo

  • Entonces desde nuestro Gestor de Base de Datos 'phpMyAdmin', crearemos la base de datos llamada 'conexionpdo':

  • Como podemos ver hemos creado una base de datos llamada "conexionpdo" desde nuestro gestor phpMyAdmin, ahora procederemos a crear nuestra tabla llamada "usuario".

Creando la Tabla usuario

  • Para este proceso procedemos a entrar al área que nos brinda phpMyAdmin para escribir nuestras consultas a la base de datos, presionando el botón superior SQL:

  • Ahora procedemos a realizar la siguiente consulta para crear nuestra tabla "usuario":

create TABLE usuario (
id_usuario INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(40) NOT NULL,
usuario VARCHAR(20) NOT NULL,
email VARCHAR(40) NOT NULL,
edad VARCHAR(4) NOT NULL,
PRIMARY KEY (id_usuario)
);


Segundo Paso: Conectandonos a nuestra Base de Datos llamada 'conexionpdo' usando PDO de PHP
  • Para este proceso crearemos un archivo llamado 'conexion.php', el cual estará alojado dentro de la carpeta "config"; por motivos de organización (config/conexion.php)

Archivo config/conexion.php


<?php
/**
 * Created by PhpStorm.
 * User: Miguel
 * Date: 15/04/2017
 * Time: 15:48
 */
/**
 * Proyecto Conexión a una base de datos MySQL
 * Estoy utilizando PHP 7
 * Primer Paso: He creado una base de datos llamada: 'conexionpdo'
 * Crear una tabla llamada 'usuario' que
 * tendrá 5 campos: id_usuario, nombre, usuario, email y edad.
 *  usaré todos esos campos como not null porque son obligatorios o requeridos
 */
/**
 * Realizo una conexión a la base de datos MySQL con la extensión PDO de PHP
 */
/**
* Creando las variables globales con los valores de aceeso a mi
 * MySQL
 */
define('DB_USER', 'root'); //nombre del usuario DB_USER
define('DB_PASSWORD', '***********'); //contraseña de MySQL DB_PASSWORD
define('DSN', 'mysql:host=localhost;port=3306;dbname=conexionpdo');
/**
 * dsn data source name, esta compuesto de los siguientes elementos:
 * prefijo DSN = mysql,
 * host = nombre del servidor donde esta mysql = localhost
 * port = número de la puerta por donde localhost interactua
 * dbname = nombre de la base de datos que en nuestro caso es 'conexionpdo'
 **/
$options = array
    (
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING
    );

/**
 * ahora creo el objeto $dbc (database connection) y paso por él las
 * variables globales antes definidas y la matriz
 * dentro del bloque try catch (para más informaciones, les dejo este link:
 * http://php.net/manual/en/language.exceptions.php)
 */
try{
    $dbc = new PDO(DSN, DB_USER, DB_PASSWORD, $options);
}catch(PDOException $ex){
    echo $ex->getMessage();
}

  • En este script hemos utilizado la extensión PDO para conectarnos a nuestra Base de datos llamada "conexionpdo". Para quien desea conocer más acerca de esta extensión y su forma de uso, los invito a vistar el siguiente site: Connect to MySQL with PHP.
Tercer PasoConstruyendo nuestro formulario HTML5 utilizando algunas dependencias bootstrap para realizar la maquetación y las validaciones respectivas.
  • Para este proceso crearemos un archivo llamado 'index.php', el cual albergará el código HTML5 de nuestro formulario de ingreso de datos a nuestra base de datos "conexionpdo"; este estará alojado en la carpeta principal de nuestro proyecto: 

Archivo index.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ingresando Datos a Base de datos githubconexionpdo</title>
<link type="text/css" rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/jquery.bootstrapvalidator/0.5.0/css/bootstrapValidator.min.css" />
<link type="text/css" rel="stylesheet" href="css/styles.css" />
<link type="text/css" rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css" />
<link type="text/css" rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.js" type="text/javascript"></script>
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="application/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script type="application/javascript" src="js/script.js"></script>
<script type="application/javascript" src="js/validaciones.js"></script>

</head>

<body>

<div class="container">

    <form action="http://localhost/GitHub/ConeccionPDO/controladores/save.php" method="post" class="well form-horizontal" id="contact_form">
<fieldset>

<!-- Form Name -->
<legend>Ingrese Registros a githubconexionpdo!</legend>

<!-- Text input-->

<div class="form-group">
  <label class="col-md-4 control-label">Nombre</label>  
  <div class="col-md-4 inputGroupContainer">
  <div class="input-group">
  <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
  <input name="nombre" class="form-control"  type="text" />
    </div>
  </div>
</div>

<!-- Text input-->

<div class="form-group">
  <label class="col-md-4 control-label" >Last Name</label> 
    <div class="col-md-4 inputGroupContainer">
    <div class="input-group">
  <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
  <input name="usuario" class="form-control"  type="text" />
    </div>
  </div>
</div>


<!-- Text input-->
       <div class="form-group">
  <label class="col-md-4 control-label">E-Mail</label>  
    <div class="col-md-4 inputGroupContainer">
    <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-envelope"></i></span>
  <input name="email" class="form-control"  type="text" />
    </div>
  </div>
</div>


<!-- Text input-->
       
<div class="form-group">
  <label class="col-md-4 control-label">Edad</label>  
    <div class="col-md-4 inputGroupContainer">
    <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span>
  <input name="edad" min= "10" max="101" class="form-control" type="number" />
    </div>
  </div>
</div>

<!-- Button -->
<div class="form-group">
  <label class="col-md-4 control-label"></label>
  <div class="col-md-4" align="center">
    <button type="submit" class="btn btn-warning">Enviar <span class="glyphicon glyphicon-send"></span></button>
  </div>
</div>

</fieldset>
</form>
</div>
    

</body>
</html>

Cuarto PasoAhora es el momento de crear nuestro archivo "save.php"; el cual contiene el script que realiza el proceso de envío de nuestros registros ingresados desde el formulario creado en "index.php". Este archivo estará alojado en la carpeta "controladores"
  • El archivo save.php contiene un script PHP, el cual incluye al archivo conexion.php para tener acceso a la base de datos 'conexionpdo'; luego este recibe los datos que son enviados via post desde el formulario creado en index.php; para finalizar realiza una consulta a la base de datos MySQL utilizando sentencias preparadas para evitar inyecciones peligrosas a nuestra base de datos, veamos: 

Archivo controladores/save.php


<?php
/**
 * Created by PhpStorm.
 * User: Miguel
 * Date: 15/04/2017
 * Time: 22:48
 */
include '../config/conexion.php';
//recibiendo valores del formulario via post de index.php
    $nombre = $_POST['nombre'];
    $usuario = $_POST['usuario'];
    $email = $_POST['email'];
    $edad = $_POST['edad'];

/**
 * @param $nombre
 * @param $usuario
 * @param $email
 * @param $edad
 * @param $dbc
 */
insert($nombre,$usuario,$email,$edad,$dbc);
function insert($nombre, $usuario, $email, $edad, $dbc){

    $stmt = $dbc->prepare("INSERT INTO usuario (nombre,usuario,email,edad) VALUES (:nombre, :usuario, :email, :edad)");
    $stmt->bindParam(':nombre', $nombre);
    $stmt->bindParam(':usuario', $usuario);
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':edad', $edad);
    
    $stmt->execute();
    
    //$count=$stmt->rowCount();
    
    //echo $count. "Nuevos Registros fueron ingresados satisfactoriamente";
    echo "Nuevos Registros fueron ingresados satisfactoriamente";


    }

  • Si hemos codificado de manera correcta todos estos archivos e integrado nuestros datos de acceso a MySQL en el archivo "config/conexion.php"; obtendremos en nuestro navegador el siguiente panorama:
Bueno con esto culminamos un artículo muy importante que nos muestra claramente con detalles como es que podemos realizar la conexión a una base de datos MySQL utilizando el API PDO de PHP e insertar de forma segura unos registros a travez de un formulario con validaciones, todo paso a paso para que sea entendible para los que recien estan comenzando!.

  • Les dejo el Código entero de este script:
Compartir:
Localización Gov. Celso Ramos, SC, Brasil

Aplicativo PHP

PDO

PHP

PHP y MySQL

Sentencias Preparadas

Déjenos su Comentário:

0 commentários: