Vaya al Contenido

PHP Insertar Datos Múltiples - SuperHispano

Saltar menú
SuperHispano
+34 012 345 678
info@example.com
España 03:19:18 sábado 07/02/26
Saltar menú
Saltar menú
Saltar menú
Taller > PHP > Base de Datos MySQL

Insertar Múltiples Registros en MySQL con PHP


Cuando trabajamos con bases de datos en PHP, es común necesitar insertar múltiples registros al mismo tiempo. PHP proporciona varias formas de hacerlo usando MySQLi o PDO. En este artículo, aprenderás a insertar múltiples registros en una tabla MySQL utilizando ambas extensiones.

¿Por qué insertar múltiples registros a la vez?


Insertar varios registros en una sola operación tiene varias ventajas:

Reducción de llamadas a la base de datos: Al insertar varios registros de una vez, se reduce el número de conexiones necesarias, mejorando la eficiencia.
Transacciones seguras: Si un registro falla al insertarse, puedes asegurarte de que no se agregue ninguno si utilizas transacciones.

Usando MySQLi Orientado a Objetos


En este ejemplo, usaremos la extensión MySQLi en modo orientado a objetos para insertar tres registros en la tabla empleados.

Ejemplo de Inserción con MySQLi Orientado a Objetos


<?php
$servidor = "localhost";
$usuario = "root";
$contraseña = "";
$base_datos = "empresa";

// Crear conexión
$conexion = new mysqli($servidor, $usuario, $contraseña, $base_datos);

// Verificar conexión
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}

// SQL para insertar múltiples registros
$sql = "INSERT INTO empleados (nombre, apellido, email)
VALUES ('Carlos', 'Hernández', 'carlos@ejemplo.com');";
$sql .= "INSERT INTO empleados (nombre, apellido, email)
VALUES ('Ana', 'García', 'ana@ejemplo.com');";
$sql .= "INSERT INTO empleados (nombre, apellido, email)
VALUES ('Luis', 'Pérez', 'luis@ejemplo.com')";

// Ejecutar la consulta
if ($conexion->multi_query($sql) === TRUE) {
echo "Registros insertados exitosamente";
} else { echo "Error: " . $sql . "<br>" . $conexion->error;
}

// Cerrar la conexión
$conexion->close();
?>


Explicación del código


multi_query(): Permite ejecutar varias consultas SQL en una sola llamada, separando cada consulta con un punto y coma.
Se insertan tres registros diferentes en la tabla empleados.

Usando MySQLi Procedural


Si prefieres el enfoque procedural, el siguiente código realiza la misma operación con la función mysqli_multi_query().

Ejemplo de Inserción con MySQLi Procedural


<?php
$servidor = "localhost";
$usuario = "root";
$contraseña = "";
$base_datos = "empresa";

// Crear conexión
$conexion = mysqli_connect($servidor, $usuario, $contraseña, $base_datos);

// Verificar conexión
if (!$conexion) {
die("Conexión fallida: " . mysqli_connect_error());
}

// SQL para insertar múltiples registros
$sql = "INSERT INTO empleados (nombre, apellido, email)
VALUES ('Pedro', 'López', 'pedro@ejemplo.com');";
$sql .= "INSERT INTO empleados (nombre, apellido, email)
VALUES ('María', 'Núñez', 'maria@ejemplo.com');";
$sql .= "INSERT INTO empleados (nombre, apellido, email)
VALUES ('José', 'Martínez', 'jose@ejemplo.com')";

// Ejecutar la consulta
if (mysqli_multi_query($conexion, $sql)) {
echo "Registros insertados exitosamente";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conexion);
}

// Cerrar la conexión
mysqli_close($conexion);
?>


Explicación del código


Similar al ejemplo orientado a objetos, pero utilizando funciones procedurales como mysqli_connect() y mysqli_multi_query().

Usando PDO (PHP Data Objects)


PDO es una opción más robusta que ofrece soporte para múltiples bases de datos, además de MySQL. Aquí te mostramos cómo insertar múltiples registros utilizando transacciones, lo que asegura que todos los registros se inserten correctamente o ninguno lo haga.

Ejemplo de Inserción con PDO


<?php
$servidor = "localhost";
$usuario = "root";
$contraseña = "";
$base_datos = "empresa";

try {
$conexion = new PDO("mysql:host=$servidor;dbname=$base_datos", $usuario, $contraseña);
// Configurar el modo de error de PDO para que lance excepciones
$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Iniciar la transacción
$conexion->beginTransaction();

// SQL para insertar múltiples registros
$conexion->exec("INSERT INTO empleados (nombre, apellido, email)
VALUES ('Roberto', 'Sánchez', 'roberto@ejemplo.com')");
$conexion->exec("INSERT INTO empleados (nombre, apellido, email)
VALUES ('Laura', 'Ortiz', 'laura@ejemplo.com')");
$conexion->exec("INSERT INTO empleados (nombre, apellido, email)
VALUES ('Carolina', 'Mendoza', 'carolina@ejemplo.com')");

// Confirmar la transacción
$conexion->commit();
echo "Registros insertados exitosamente";
} catch (PDOException $e) {
// Revertir la transacción si algo falla
$conexion->rollback();
echo "Error: " . $e->getMessage();
}

// Cerrar la conexión
$conexion = null; ?>


Explicación del código


Transacciones: Con beginTransaction(), puedes agrupar varias consultas SQL en una sola transacción, y con commit() confirmarlas. Rollback: Si ocurre un error en alguna consulta, rollback() deshace todas las inserciones realizadas durante la transacción.
Excepciones: El uso de try-catch asegura que cualquier error en la consulta sea manejado correctamente.

Conclusión


Insertar múltiples registros en una base de datos MySQL desde PHP es una tarea común y puede lograrse utilizando MySQLi o PDO. MySQLi ofrece dos enfoques (orientado a objetos y procedural), mientras que PDO proporciona transacciones para un control más fino.
Al utilizar cualquiera de estas técnicas, puedes mejorar la eficiencia de tu aplicación al reducir las conexiones a la base de datos y asegurar la consistencia de los datos.
+34 012 345 678
+34 012 345 678 (fax)
example@superhispano.com
Creado con WebSite X5
Regreso al contenido
Icono de la aplicación
SuperHispano Instale esta aplicación en su pantalla de inicio para una mejor experiencia
Toque Botón de instalación en iOS y luego "Agregar a su pantalla"