Inserte múltiples datos en MySQL usando MySQLi y PDO
La función mysqli_multi_query() se puede utilizar para ejecutar múltiples declaraciones SQL.
El siguiente ejemplo agrega tres registros nuevos a la tabla "MyGuests":
Ejemplo (MySQLi - Orientado a objetos)
<?php $servername = " localhost " ; $username = " nombre de usuario " ; $contraseña = " contraseña " ; $dbname = " myDB " ; $conexión = nuevo mysqli ( $nombredelservidor , $nombredeusuario , $contraseña , $nombrebd ) // Verifique el enlace ; si ( $conexión -> connect_error ) { die ( " Error de conexión: " . $conn - > connect_error ) ; $sql = " INSERTAR EN Mis Invitados (nombre, apellido, correo electrónico)VALUES ('John', 'Doe', '[email protected]'); " ; $sql .= " INSERTAR EN Mis Invitados (nombre, apellido, correo electrónico) VALORES ('Mary', 'Moe', '[email protected]'); " ; $sql .= " INSERT INTO MisInvitados (nombre, apellido, correo electrónico)VALUES ('Julie', 'Dooley', '[email protected]') " ; si ( $conexión -> multi_query ( $sql ) === VERDADERO ) { eco " Nuevo registro insertado exitosamente " ; demás { eco " Error : " $ sql . $conexión -> cerrar ( ) ? > | Tenga en cuenta que cada declaración SQL debe estar separada por un punto y coma. |
---|
Ejemplo (MySQLi - Orientado a procedimientos)
<?php $servername = " localhost " ; $username = " nombre de usuario " ; $contraseña = " contraseña " ; $dbname = " myDB " ; $conn = mysqli_connect ( $servername , $username , $password , $dbname ) ; // Verifique el enlace; si ( ! $ conexión ) { die ( " Error
de conexión: " . mysqli_connect_error ( ) ) ; $sql = " INSERTAR EN Mis Invitados (nombre, apellido, correo electrónico)VALUES ('John', 'Doe', '[email protected]'); " ; $sql .= " INSERTAR EN Mis Invitados (nombre, apellido, correo electrónico) VALORES ('Mary', 'Moe', '[email protected]'); " ; $sql .= " INSERT INTO MisInvitados (nombre, apellido, correo electrónico)VALUES ('Julie', 'Dooley', '[email protected]') " ; si ( mysqli_multi_query ( $ conexión , $ sql ) ) { eco " Nuevo registro insertado exitosamente " ; demás { eco " Error : " $ sql " <br> " . mysqli_close ( $conexión ) ? > Ejemplo (DOP)
<?php $nombredeservidor = " localhost " ; $nombre de usuario = " nombre de usuario " ; $contraseña = " contraseña " ; $dbname = " myDBPDO " ; { $conexión = nuevo PDO ( " mysql:host= $servername ;dbname= $dbname " , $nombre de usuario , $contraseña ) ; // establece el modo de error de PDO en excepción; $conn -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION ) // Iniciar transacción ; $conn -> comenzarTransacción ( ) // instrucción SQL ; $conn -> exec ( " INSERT INTO MyGuests (nombre, apellido, correo electrónico) VALUES ('John', 'Doe', '[email protected]') " ) $ conn
- >
exec ( " INSERT INTO MyGuests (nombre) ; , apellido, correo electrónico) VALORES ('Mary', 'Moe', '[email protected]') " ) ; $conn -> exec ( " INSERT INTO MyGuests (nombre, apellido, correo electrónico) VALUES ('Julie', 'Dooley', '[email protected]') " ) // Enviar transacción ; $conexión -> confirmar ( ) ; eco " Nuevo registro insertado exitosamente " ; captura ( PDOException $e ) { // Si la ejecución falla, revertir $ conexión -> revertir ( ) ; $ sql . " <br> " . $conexión = nulo ? > Utilice declaraciones preparadas
La extensión mysqli proporciona una segunda forma de insertar declaraciones.
Podemos preparar declaraciones y vincular parámetros.
La extensión mysql puede enviar declaraciones o consultas a la base de datos mysql sin datos. Puede asociar o "vincular" variables nemáticamente.
Ejemplo (MySQLi usa declaraciones preparadas)
<?php $servername = " localhost " ; $username = " nombre
de usuario " ; $contraseña = " contraseña " ; $ dbname = " myDB " ; $conexión = nuevo mysqli ( $nombredelservidor , $nombredeusuario , $contraseña , $nombrebd ) ; // Detecta la conexión; si ( $conexión -> connect_error ) { die ( " Error de conexión: " . $conn - > connect_error ) ; demás { $sql = " INSERTAR EN MisInvitados(nombre, apellido, correo electrónico) VALUES(?, ?, ?) " // Inicializar objeto de declaración para mysqli_stmt_prepare() ; $stmt = mysqli_stmt_init ( $conn ) ; // Declaración de preprocesamiento si ( mysqli_stmt_prepare ( $stmt , $sql ) ) { // Parámetros de enlace mysqli_stmt_bind_param ( $stmt , ' sss ' , $nombre , $apellido , $email ) // Establecer parámetros y ejecutar ; $ nombre = ' Juan ' ; $ apellido = ' Doe ' ; $ correo electrónico = ' [email protected] ' ; mysqli_stmt_execute ( $ stmt ) ; $ nombre = ' María ' ; @ejemplo.com ' ; mysqli_stmt_execute ( $stmt ) ; $nombre = ' Julie ' ; $apellido = ' Dooley '; ; $correo electrónico = ' [email protected] ' ; mysqli_stmt_execute ( $ stmt ) ; } ?> Podemos ver que la modularidad se utiliza para resolver problemas en los ejemplos anteriores. Podemos lograr una lectura y gestión más sencilla creando bloques de código.
Preste atención a la vinculación de parámetros. Veamos el código en mysqli_stmt_bind_param():
mysqli_stmt_bind_param($stmt, 'sss', $nombre, $apellido, $correo electrónico);
Esta función vincula la consulta de parámetros y pasa los parámetros a la base de datos. El segundo parámetro es "sss". La siguiente lista muestra los tipos de parámetros. El carácter s le dice a mysql que el parámetro es una cadena.
Pueden ser los siguientes cuatro parámetros:
yo - entero
d - número de coma flotante de doble precisión
s - cuerda
b - valor booleano
Cada parámetro debe especificar un tipo para garantizar la seguridad de los datos. El juicio de tipos puede reducir el riesgo de vulnerabilidades de inyección SQL.