Skip to content

Latest commit

 

History

History
117 lines (89 loc) · 3.38 KB

File metadata and controls

117 lines (89 loc) · 3.38 KB

Множественная вставка записей

Вставка нескольких записей в MySQL с помощью MySQLi и PDO

Несколько SQL-запросов должны быть выполнены с помощью функции mysqli_multi_query(). Следующие примеры добавляют три новые записи в таблицу «MyGuests»:

<?php

$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'myDB';

// Создание подключения
$conn = new mysqli($servername, $username, $password, $dbname);

// Проверка подключения
if ($conn -> connect_error) {
  die("Connection failed: {$conn -> connect_error}");
}

$sql = 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("John", "Doe", "john@example.com");';
$sql .= 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("Mary", "Moe", "mary@example.com");';
$sql .= 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("Julie", "Dooley", "julie@example.com")';

if ($conn -> multi_query($sql) === true) {
  print('New records created successfully');
} else {
  print("Error: {$sql}<br>{$conn -> error}");
}

$conn -> close();

Обратите внимание, что каждый оператор SQL должен быть разделен точкой с запятой.

Пример в процедурном стиле MySQLi

<?php

$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'myDB';

// Создание подключения
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Проверка подключения
if (!$conn) {
  die('Connection failed: ' . mysqli_connect_error());
}

$sql = 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("John", "Doe", "john@example.com");';
$sql .= 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("Mary", "Moe", "mary@example.com");';
$sql .= 'INSERT INTO MyGuests (firstname, lastname, email)
VALUES ("Julie", "Dooley", "julie@example.com")';

if (mysqli_multi_query($conn, $sql)) {
  print('New records created successfully');
} else {
  print("Error: {$sql}<br>" . mysqli_error($conn));
}

mysqli_close($conn);

Пример с использованием PDO

<?php

$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'myDB';

try {
  $conn = new PDO(
    "mysql:host={$servername};dbname={$dbname}",
    $username,
    $password
  );
  
  // установка режима ошибки PDO на исключение
  $conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  // запуск транзакции
  $conn -> beginTransaction();

  // наши SQL-запросы
  $conn -> exec('INSERT INTO MyGuests (firstname, lastname, email)
  VALUES ("John", "Doe", "john@example.com")');
  $conn -> exec('INSERT INTO MyGuests (firstname, lastname, email)
  VALUES ("Mary", "Moe", "mary@example.com")');
  $conn -> exec('INSERT INTO MyGuests (firstname, lastname, email)
  VALUES ("Julie", "Dooley", "julie@example.com")');

  // фиксация транзакции
  $conn -> commit();
  
  print('New records created successfully');
} catch(PDOException $e) {
  // откат транзакции, если что-то не удалось
  $conn -> rollback();
  print("Error: {$e -> getMessage()}");
}

$conn = null;