PHP MySQL Inserir Múltiplos

Neste artigo, exploraremos diferentes maneiras de inserir várias linhas de dados em um banco de dados MySQL usando PHP, incluindo MySQLi e PDO.

Também abordaremos algumas boas práticas e como implementá-las para que os dados sejam formatados corretamente e que a consulta seja executada com eficiência.

Ao terminar de ler este artigo, você poderá inserir vários registros em um banco de dados MySQL usando o código PHP.

O processo de inserir vários registros ao mesmo tempo em uma tabela geralmente é necessário ao trabalhar com bancos de dados. Você pode fazer isso no MySQL usando a instrução INSERT com vários conjuntos de valores, que podem ser usados ​​para fazer isso.



Inserir várias linhas usando um loop

O primeiro método para inserir várias linhas de dados em um banco de dados MySQL usando PHP é usando um loop.

Nesse método, criamos um array de dados e percorremos cada elemento do array para inseri-lo no banco de dados.

Aqui está um código de exemplo:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// database connection
$conn = mysqli_connect("localhost", "username", "password", "database");
// array of data
$data = array(
array("John", "Doe", "[email protected]"),
array("Jane", "Doe", "[email protected]"),
array("Bob", "Smith", "[email protected]")
);
// loop through the array and insert each row into the database
foreach ($data as $row) {
$sql = "INSERT INTO users (first_name, last_name, email) VALUES ('$row[0]', '$row[1]', '$row[2]')";
mysqli_query($conn, $sql);
}
// close database connection
mysqli_close($conn);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

No exemplo acima, primeiro estabelecemos uma conexão com o banco de dados usando a função mysqli_connect() . Em seguida, criamos uma matriz de dados, que contém três linhas de dados.

Nós percorremos cada linha do array e usamos a função mysqli_query() para inserir a linha na tabela de usuários do nosso banco de dados.


Inserir vários registros usando MySQLi e PDO

Com a função mysqli_multi_query() , várias instruções SQL podem ser executadas ao mesmo tempo.

Usando os exemplos a seguir, você poderá adicionar três novos registros à tabela “ Usuários ”:

Abaixo está um exemplo usando o método Orientado a Objetos do MySQLi:

Example (MySQLi Object-Oriented): 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$servername = "localhost";
$username = "my_user";
$password = "my_pass";
$dbname = "mrx_test_db";
// Creating connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Checking connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Matt', 'LeBlanc', '[email protected]', 55, 'Male');";
$sql .= "INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Matthew', 'Perry', '[email protected]', 53 , 'Male');";
$sql .= "INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Jennifer', 'Anniston', '[email protected]', 54, 'Female')";
if ($conn->multi_query($sql) === TRUE) {
echo "New records added successfully";
} else {
echo "Error: " . $sql . " " . $conn->error;
}
$conn->close();
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Um ponto-e-vírgula deve ser usado para separar cada instrução SQL para que ela seja válida.
Abaixo está um exemplo usando o método Processual do MySQLi:

Example (MySQLi Procedural): 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
$servername = "localhost";
$username = "my_user";
$password = "my_pass";
$dbname = "mrx_test_db";
// Creating connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Checking connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Matt', 'LeBlanc', '[email protected]', 55, 'Male');";
$sql .= "INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Matthew', 'Perry', '[email protected]', 53 , 'Male');";
$sql .= "INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Jennifer', 'Anniston', '[email protected]', 54, 'Female')";
if (mysqli_multi_query($conn, $sql)) {
echo "New records added successfully";
} else {
echo "Error: " . $sql . " " . mysqli_error($conn);
}
mysqli_close($conn);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Há uma pequena diferença na maneira PDO de fazer as coisas:

Example (PDO): 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
$servername = "localhost";
$username = "my_user";
$password = "my_pass";
$dbname = "mrx_test_db";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// sSpecify the exception error mode in the PDO
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// begin the transaction
$conn->beginTransaction();
// our SQL statements
$conn->exec("INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Matt', 'LeBlanc', '[email protected]', 55, 'Male')");
$conn->exec("INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Matthew', 'Perry', '[email protected]', 53 , 'Male')");
$conn->exec("INSERT INTO Users (firstname, lastname, email, age, gender)
VALUES ('Jennifer', 'Anniston', '[email protected]', 54, 'Female')");
// commit the transaction
$conn->commit(); echo "New records added successfully";
}
catch (PDOException $e) {
// The transaction can be rolled back if something goes wrong
$conn->rollback();
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exemplo de Explicação

Primeiro, os detalhes da conexão são especificados em variáveis. Em seguida, um objeto PDO é criado e o modo de erro de exceção é definido como “ ERRMODE_EXCEPTION “.
Uma transação é então iniciada usando beginTransaction() . Isso é usado para garantir que todas as três instruções de inserção sejam executadas como uma única unidade de trabalho. Se houver um erro com qualquer uma das instruções, a transação pode ser revertida para que nenhum dos registros seja inserido.
As três instruções de inserção são então executadas usando exec() .
Por fim, a transação é confirmada usando commit() . Se ocorrer um erro durante a transação, o bloco catch é executado, o que reverte a transação e exibe uma mensagem de erro.
A conexão é então fechada usando $conn = null; .

Usando declarações preparadas

Outro método para inserir várias linhas de dados em um banco de dados MySQL usando PHP é usando instruções preparadas.

As instruções preparadas são uma maneira de executar uma instrução várias vezes com diferentes valores de parâmetro.

Abaixo está um exemplo:

 

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

// Prepare the SQL statement
$sql = "INSERT INTO users (name, email, password) VALUES (?, ?, ?)";
$stmt = mysqli_prepare($conn, $sql);

// Bind parameters and execute the statement multiple times
$name1 = "John";
$email1 = "[email protected]";
$password1 = "password123";
mysqli_stmt_bind_param($stmt, "sss", $name1, $email1, $password1);
mysqli_stmt_execute($stmt);

$name2 = "Jane";
$email2 = "[email protected]";
$password2 = "password456";
mysqli_stmt_bind_param($stmt, "sss", $name2, $email2, $password2);
mysqli_stmt_execute($stmt);

$name3 = "Bob";
$email3 = "[email protected]";
$password3 = "password789";
mysqli_stmt_bind_param($stmt, "sss", $name3, $email3, $password3);
mysqli_stmt_execute($stmt);

// Close the statement and connection
mysqli_stmt_close($stmt);
mysqli_close($conn);
?>

 

Neste exemplo, estamos inserindo três registros na tabela de usuários. Estamos preparando a instrução SQL, associando parâmetros e executando a instrução várias vezes usando diferentes valores de parâmetro para cada registro.

Você pode repetir a vinculação e executar as etapas quantas vezes forem necessárias para inserir vários registros.

Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone