BaulPHP

Menu
  • PHP Ejemplos
    • PHP tutoriales
    • MYSQL
  • HTML5
  • Contáctanos
  • Iniciar Sesión

Insertar datos MySQL usando PDO PHP

No hay comentarios
4.5 / 5 ( 2 votos )

Insertar datos MySQL usando PDO PHP. En este artículo veremos la inserción a la base de datos usando PDO PHP. Primeramente tenemos que asegurarnos de que tenemos una variable de conexión PDO configurada correctamente que necesita para ejecutar consultas SQL con PDO y para informarle de los posibles errores.

Además, usaremos librerías externas como BootStrap para darle una estética profesional a nuestro sistema

Para ejecutar una consulta INSERT INTO con PDO, tenemos que seguir los siguientes pasos que detallamos a continuación:

  • Crear una instrucción SQL INSERT INTO correcta
  • Reemplazar todos los valores reales con marcadores de posición en la consulta
  • Preparar la consulta resultante para su ejecución
  • Ejecutar la instrucción, enviando todos los valores reales en forma de matriz a la base de datos.

¿Que hay dentro?

  • 1 ¿Cómo funcionan las declaraciones preparadas de PDO?
  • 2 Insertar datos MySQL usando PDO PHP
    • 2.1 1) La base de datos y tabla
    • 2.2 2) Declaración del fichero de conexión
    • 2.3 3) Creación de un formulario HTML5
    • 2.4 4) Resultados de la consulta
    • 2.5 5) Declaramos la condicional de envío
    • 2.6 6) Las variables enviadas
    • 2.7 7) Crear una consulta INSERT con marcadores de posición
    • 2.8 8) Preparar la consulta
    • 2.9 9) Enlazar los marcadores de posición a las variables:
    • 2.10 10) Ejecutamos la consulta:
    • 2.11 11) Compruebe que la inserción realmente funcionó:
    • 2.12 12) Mostrando todo el código junto:
  • 3 CONCLUSIÓN: Insertar datos MySQL
    • 3.1 DESCARGAR EL EJEMPLO
    • 3.2 Descargar: Insertar Datos MySQL con PDO

¿Cómo funcionan las declaraciones preparadas de PDO?

Las declaraciones preparadas de PDO PHP poseen lo siguiente:

  1. Primero prepara una consulta SQL con valores vacíos como marcadores de posición con un signo de interrogación o un nombre de variable con dos puntos antes de cada valor
  2. Vincula valores o variables a los marcadores de posición
  3. Ejecutar consulta simultáneamente

Insertar datos MySQL usando PDO PHP

A continuacion, veremos una serie de procesos acerca de la inserción de datos mediante PDO.

1) La base de datos y tabla

Nuestra base de datos tendrá como nombre “php_insertarpdo” El y la tabla tendrá como nombre “tbl_personal“, pero ustedes puedes personalizar esos nombres en cualquier momento.

Código SQL para la tabla personal:

Esta consulta SQL pueden ejecutarlo en el phpMyAdmin y/o otro gestor de base de datos MySQL.

CREATE TABLE `tbl_personal` (
  `id` int(11) NOT NULL,
  `nombres` varchar(50) NOT NULL,
  `apellidos` varchar(200) DEFAULT NULL,
  `profesion` varchar(150) DEFAULT NULL,
  `estado` varchar(100) DEFAULT NULL,
  `fregis` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


INSERT INTO `tbl_personal` (`id`, `nombres`, `apellidos`, `profesion`, `estado`, `fregis`) VALUES
(1, 'Zoila', 'Nina', 'Sistemas', 'Perú', '2019-08-20'),
(2, 'Luis ', 'Fontis', 'Administrador', 'Argentina', '2019-08-19'),
(3, 'Maria ', 'Cotrina', 'Sistemas', 'Ecuador', '2019-08-21'),
(4, 'Jenifer ', 'Carrillo', 'Analista', 'Chile', '2019-08-21'),
(5, 'Milagros ', 'Ferrer', 'Economista', 'Colombia', '2019-08-16');

ALTER TABLE `tbl_personal`
  ADD PRIMARY KEY (`id`);


ALTER TABLE `tbl_personal`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;COMMIT;

2) Declaración del fichero de conexión

El script de conexión puede estar dentro de nuestro archivo pero es recomendable realizar una declaración externa para dinamizar los procesos.

<?php 
include('BDconect.php');
?>

3) Creación de un formulario HTML5

Para este ejemplo hemos utilizado un formulario usando HTML5 y el método POST para enviar la información. Sin embargo, para darle estética al ejemplo hemos agregado la librería BootStrap.

<form action="" method="POST">
  <div class="form-row">
    <div class="form-group col-md-6">
      <label for="nombres">Nombres</label>
      <input name="nombres" type="text" class="form-control" placeholder="Nombres">
    </div>
    <div class="form-group col-md-6">
      <label for="edad">Apellidos</label>
      <input name="apellidos" type="text" class="form-control" id="edad" placeholder="Apellidos">
    </div>
  </div>
<div class="form-row">  
    <div class="form-group col-md-6">
      <label for="profesion">Profesión</label>
      <input name="profesion" type="text" class="form-control" id="profesion" placeholder="Profesion">
    </div>

  <div class="form-group col-md-6">
    <label for="Estado">Estado</label>
    <select required name="estado" class="form-control" id="Estado">
    <option value=""><< >></option>
    <option value="Colombia">Colombia</option>
    <option value="Argentina">Argentina</option>
    <option value="Ecuador">Ecuador</option>
    <option value="Peru">Peru</option>
    <option value="Brasil">Brasil</option>
    <option value="Bolivia">Bolivia</option>
    <option value="Chile">Chile</option>
    </select>
  </div>

</div>
<div class="form-group">
  <button name="insertar" type="submit" class="btn btn-primary  btn-block">Guardar</button>
</div>
</form>

4) Resultados de la consulta

Aquí, mostramos la consulta SQL para mostrar los resultados en una tabla. Por lo tanto, para devolver los resultados de la base de datos hemos usado el ciclo FOREACH

<?php
$sql = "SELECT * FROM tbl_personal"; 
$query = $connect -> prepare($sql); 
$query -> execute(); 
$results = $query -> fetchAll(PDO::FETCH_OBJ); 

if($query -> rowCount() > 0)   { 
foreach($results as $result) { 
echo "<tr>
<td>".$result -> nombres."</td>
<td>".$result -> apellidos."</td>
<td>".$result -> profesion."</td>
<td>".$result -> estado."</td>
<td>".$result -> fregis."</td>
</tr>";

   }
 }
?>

5) Declaramos la condicional de envío

Esta condicional se ejecutara siempre y cuando se procese el formulario. Además, esta condicional ejecutara la inserción de la información a la base de datos.

if(isset($_POST['insertar'])){
....
}

6) Las variables enviadas

Recogemos la información enviada por el formulario y lo procesamos en variables

///////////// Informacion enviada por el formulario /////////////
$nombres=$_POST['nombres'];
$apellidos=$_POST['apellidos'];
$profesion=$_POST['profesion'];
$estado=$_POST['estado'];
$fregis = date('Y-m-d');
///////// Fin informacion enviada por el formulario /// 

7) Crear una consulta INSERT con marcadores de posición

La consulta SQL es normal, la variación del PDO radica que en lugar de valores, colocamos marcadores de posición con nombre. Veamos un ejemplo:

////////////// Insertar a la tabla la informacion generada /////////
$sql="insert into tbl_personal(nombres,apellidos,profesion,estado,fregis) 
values(:nombres,:apellidos,:profesion,:estado,:fregis)";

El uso de marcadores de posición se conoce como instrucciones preparadas. Usamos instrucciones preparadas como plantillas que podemos rellenar más adelante con valores reales que previamente obtenidos desde formularios, esta información está en el punto 6.

8) Preparar la consulta

En este paso la siguiente instrucción prepara una sentencia para su ejecución y devuelve un objeto sentencia. Si observamos toma la variable $sql

$sql = $connect->prepare($sql);

9) Enlazar los marcadores de posición a las variables:

Como podemos apreciar en este script, estamos vinculando un parámetro al nombre de variable especificado.

$sql->bindParam(':nombres',$nombres,PDO::PARAM_STR, 25);
$sql->bindParam(':apellidos',$apellidos,PDO::PARAM_STR, 25);
$sql->bindParam(':profesion',$profesion,PDO::PARAM_STR,25);
$sql->bindParam(':estado',$estado,PDO::PARAM_STR,25);
$sql->bindParam(':fregis',$fregis,PDO::PARAM_STR);

Puede agregar un tercer parámetro que filtre los datos antes de que lleguen a la base de datos:

PDO::PARAM_STR se utiliza para cadenas.
PDO::PARAM_INT se utiliza para enteros.
PDO::PARAM_BOOL solo permite valores booleanos (true/false).
PDO::PARAM_NULL solo permite el tipo de datos NULL.

10) Ejecutamos la consulta:

Usando la instrucción “execute” podemos ejecutar la consulta preparada previamente

$sql->execute()

11) Compruebe que la inserción realmente funcionó:

También podemos apoyarnos en una condicional para lograr la ejecución de la consulta SQL. Sin embargo, en este ejemplo comprobaremos si se realizó la inserción a la base de datos usando la instrucción “lastInsertId”.

$lastInsertId = $connect->lastInsertId();
if($lastInsertId>0){

echo "<div class='content alert alert-primary' > Gracias .. Tu Nombre es : $nombres  </div>";
}
else{
    echo "<div class='content alert alert-danger'> No se pueden agregar datos, comuníquese con el administrador  </div>";

print_r($sql->errorInfo()); 
}

Si el último identificador insertado es mayor que cero, la inserción funcionó.

12) Mostrando todo el código junto:

Aquí, mostramos el ejemplo completo de la inserción a la base de datos.

<?php
    
if(isset($_POST['insertar'])){
///////////// Informacion enviada por el formulario /////////////
$nombres=$_POST['nombres'];
$apellidos=$_POST['apellidos'];
$profesion=$_POST['profesion'];
$estado=$_POST['estado'];
$fregis = date('Y-m-d');
///////// Fin informacion enviada por el formulario /// 

////////////// Insertar a la tabla la informacion generada /////////
$sql="insert into tbl_personal(nombres,apellidos,profesion,estado,fregis) 
values(:nombres,:apellidos,:profesion,:estado,:fregis)";
    
$sql = $connect->prepare($sql);
    
$sql->bindParam(':nombres',$nombres,PDO::PARAM_STR, 25);
$sql->bindParam(':apellidos',$apellidos,PDO::PARAM_STR, 25);
$sql->bindParam(':profesion',$profesion,PDO::PARAM_STR,25);
$sql->bindParam(':estado',$estado,PDO::PARAM_STR,25);
$sql->bindParam(':fregis',$fregis,PDO::PARAM_STR);
    
$sql->execute();

$lastInsertId = $connect->lastInsertId();
if($lastInsertId>0){

echo "<div class='content alert alert-primary' > Gracias .. Tu Nombre es : $nombres  </div>";
}
else{
    echo "<div class='content alert alert-danger'> No se pueden agregar datos, comuníquese con el administrador  </div>";

print_r($sql->errorInfo()); 
}
}// Cierra envio de guardado
?>

CONCLUSIÓN: Insertar datos MySQL

El uso de la sentencia “prepare” del PDO además de escapar valores aporta otros mecanismos de seguridad que hacen de su uso un funcionamiento más seguro y eficiente.

Sin embargo, en MySQLi podríamos utilizar la función “mysqli_real_scape_string” para escapar valores, pero se requiere otros recursos para conseguir una implementación más robusta como la ofrecida por el método prepare de la clase PDO PHP.

Si observamos, a detalle la implementación no es tan complicada y su curva de aprendizaje es muy baja, recordemos que su implementación es muy recomendada si nuestro sistema posee una conexión a la base de datos.

DESCARGAR EL EJEMPLO

A continuación, les dejare un paquete ZIP completo donde contendrá la librería BootStrap, las consultas SQL, La base de datos para que puedan visualizar el ejemplo completo. Un saludo a la distancia.

Descargar 156 Sistemas PHP & MySQL Completos:

$9.99 – Comprar Finalizar compra Añadido al carrito

Icono

Descargar: Insertar Datos MySQL con PDO

1 archivo (s) 184.60 KB
Descargar
Un Hosting EXPERTO EN WORDPRESS:

Si tu página web o Blog anda lento. Aquí, la solución.

Oferta especial: , prueba gratis durante 30 días.

Tu Web cargará como un cohete y Google se te comerá a besos. :)

Lo sabemos, y por eso tienen servidores con discos SSD para que las páginas vuelen.

Suscribirme a BaulPHP
Share
Tweet
Email
Entrada Previa
Siguiente Entrada

Sobre el Autor

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Cancelar la respuesta

Anuncios

Vincy

Soy Nestor, un desarrollador web. Si desea iniciar un proyecto y hacer un lanzamiento rápido, Contáctame.

Estoy disponible para trabajos independientes.

nestor@baulphp.com

Descargar 156 Sistemas PHP & MySQL – BaulPHP

$9.99 – Comprar Finalizar compra Añadido al carrito
Descargar 156 sistemas PHP

Descargar 156 sistemas PHP

BaulPHP

Blog de programación, desarrollo web, tutoriales, PHP, MySQL, jQuery, Ajax, WordPress, Drupal, CodeIgniter y Demostraciones
Copyright © 2019 BaulPHP
Nosotros | Política de Privacidad | Términos y condiciones | Contacto |