> Manuales > Manual de PHP

Forma sencilla de introducir nuevos registros en una tabla de base de datos, utilizando el lenguaje PHP. Ejemplo de Insert con PHP.

Introducción de nuevos registros con PHP

En el artículo anterior comenzamos el aprendizaje del acceso a las bases de datos con PHP. En ese artículo realizamos la creación de una tabla en un sistema gestor MySQL y explicamos cómo realizar la conexión con la base de datos con código PHP basado en la interfaz de mysqli basada en objetos, que es la recomendada en la actualidad. Es importante que hayas leído ese artículo porque ahora vamos a continuar con el mismo ejemplo, indicando cómo podemos insertar datos en la tabla desde páginas PHP.

Una vez creada la tabla clientes en nuestra base de datos ejemplo, el paso siguiente sea llenarla con registros. Para ello vamos a ver este artículo, en el que se reciben datos desde un formulario y luego se insertan con PHP en la base de datos, en la tabla adecuada.

Formulario para entrada de datos

Los datos del registro pueden ser recogidos, por ejemplo, a partir de un formulario. Aquí os proponemos un simple documento HTML que recoge los datos y los envía a una página PHP que se encarga de procesarlos:

<!DOCTYPE html>
<html lang="es">
<head>
  <title>Insertar.html</title>
</head>
<body>
  <div>
    <h1>Insertar un registro</h1>
    <br>
    <form method="POST" action="insertar.php">
      Nombre<br>
      <input type="TEXT" name="nombre"><br>
      Teléfono<br>
      <input type="TEXT" name="telefono"><br>
      <input type="SUBMIT" value="Insertar">
    </form>
  </div>
</body>
</html>

Como puedes apreciar en el atributo action de la etiqueta <form>, al enviarse el formulario se cargará la página de destino (insertar.php). En esa página lo primero que habrá que hacer es establecer un vínculo entre el script PHP y la base de datos.

Esta conexión se lleva a cabo creando un nuevo objeto mysqli, tal como explicamos en el artículo de trabajar con bases de datos en PHP.

Función de conexión

Antes de ponernos a ver el código de la inserción vamos a volver a incidir sobre el código de conexión con la base de datos, para escribirlo en una función que podamos invocar desde todas las páginas que requieran conectarse con el servidor de MySQL.

Esta tarea es importante, dado que lo ideal es escribir el código de conexión en un único lugar, de modo que si luego cambian los datos de acceso a la base de datos, solo tendremos que actualizar un archivo.

Entonces, lo que vamos a definir es una función con el código de la conexión, que devuelve el objeto mysqli creado al conectarnos. Nuestro código de conexión tendrá esta pinta:

<?php
function conexion() {
  $mysqli_conexion = new mysqli("localhost", "homestead", "secret", "sandbox");
  if ($mysqli_conexion->connect_errno) {
    echo "Error de conexión con la base de datos: " . $mysqli_conexion->connect_errno;
    exit;
  }
  return $mysqli_conexion;
}
?>

Ahora simplemente tendremos que invocar esta función para recuperar el objeto de conexión:

$conexion = conexion();

El archivo que declara la función lo colocaremos en un include, que incluiremos en cada página que necesite conectarse con la base de datos.

Por ejemplo, a nuestro include le podemos llamar conexion.php, de modo que ahora para conectarnos con la base de datos tendremos que hacer el include y luego llamar a la función de conexion().

include "conexion.php";
$conexion = conexion();

Esta "ceremonia" de conexión la repetiremos siempre que sea necesario conectarse. Será siempre igual por lo que no incideremos más en ella. Si quieres más información puedes consultar el videotutorial de includes en PHP.

Inserción de registros en la tabla con PHP

Una vez creada la conexión con la base de datos ya estamos en condiciones de realizar cualquier tipo de operación con ella. En este artículo veremos cómo realizar la inserción de los datos enviados mediante el formulario.

El proceso de inserción lo vamos a dividir en tres pasos:

  1. Recuperar los datos que nos llegaron desde el formulario
  2. Componer una sentencia SQL para la inserción del registro en la tabla
  3. Ejecutar la sentencia SQL con la conexión con la base de datos que habíamos realizado
La orden de inserción del registro en la realizamos en lenguaje SQL. No entraremos en la descripción de la orden SQL, para comprender más acerca de cómo introducir registros, refererirse al tutorial de SQL.

Para ejecutar una sentencia en la base de datos usamos el método query del objeto de conexión. Ese método recibe la sentencia SQL a ejecutar y devuelve un boleano como respuesta. Si la sentencia se ejecutó correctamente el valor del boleano será true. En caso que hubiera algún error el valor devuelto será false.

Podemos ver el código de esta inserción a continuación.

// Recuperamos los datos del formulario
$nombre = $_POST["nombre"];
$telefono = $_POST["telefono"];

// Componemos la sentencia SQL
$ssql = "insert into clientes (nombre, telefono) values ('$nombre','$telefono')";

// Ejecutamos la sentencia y comprobamos si ha ido bien
if($conexion->query($ssql)) {
  echo "<p>Registro insertado con éxito</p>";
} else {
  echo "<p>Hubo un error al ejecutar la sentencia de inserción: {$conexion->error}</p>";
}
$conexion->close();

Concentrar la inserción en la base de datos en una misma página

Cuando desarrollamos con PHP es una buena costumbre mantener todo el proceso en una única página, para concentrar así todo el flujo de inserción en un único script PHP. Para ello podemos usar la técnica explicada de la autollamada de formularios. A veces también le llamamos a esto formularios reentrantes.

Aquí voy a dejar el mismo código de este ejemplo de inserción de registros en PHP, pero en un único archivo que se llama a sí mismo para producir la inserción de los datos en la base de datos.

<!DOCTYPE html>
<html lang="es">
<head>
  <title>Insertar</title>
</head>
<body>
  <?php
  if (!$_POST) {
  ?>
    <div>
      <h1>Insertar un registro</h1>
      <br>
      <form method="POST" action="insertar.php">
        Nombre
        <br>
        <input type="text" name="nombre"><br>
        Teléfono
        <br>
        <input type="text" name="telefono">
        <br>
        <input type="submit" value="Insertar">
      </form>
    </div>
  <?php
  } else {
    include "conexion.php";
    $conexion = conexion();

    // Recuperamos los datos del formulario
    $nombre = $_POST["nombre"];
    $telefono = $_POST["telefono"];

    // Componemos la sentencia SQL
    $ssql = "insert into clientes (nombre, telefono) values ('$nombre','$telefono')";

    // Ejecutamos la sentencia y comprobamos si ha ido bien
    if($conexion->query($ssql)) {
      echo "<p>Registro insertado con éxito</p>";
    } else {
      echo "<p>Hubo un error al ejecutar la sentencia de inserción: {$conexion->error}</p>";
    }
    $conexion->close();
  ?>
  <p><a href="insertar.php">Volver al formulario</a></p>
  <?php
  }
  ?>
</body>
</html>

Nota que, para que este código funcione tendrás que nombrarlo insertar.php y tener el archivo del include de la función de conexión (conexion.php) en la misma carpeta que el archivo insertar.php

Conclusión sobre las inserciones de datos en bases de datos con PHP

Con esto hemos aprendido a insertar datos en la base de datos. Para ver los datos insertados en el artículo siguiente vamos a mostrar cómo podemos recuperar datos de una tabla para mostrarlos en la página. De todos modos, para visualizar los datos que se están almacenando en la base de datos también podrías usar un programa de acceso y administración de bases de datos de interfaz gráfica.

Esperamos que el proceso de inserción haya quedado claro y que puedas haber realizado este ejemplo por tu cuenta, insertando varios registros en la tabla. Cualquier duda recuerda que tienes la sección de FAQs para formularla.

Rubén Alvarez

Rubén es doctor en química y programador principalmente en sus ratos libres con...

Manual