// Параметры подключения к БД, желательно держать в отдельном файле
$username = 'myusername';
$password = 'mypassword';
$dbname = 'mydatabase';
$dbhost = '127.0.0.1';
// Подключение к БД
$dsn = 'mysql:host=$dbhost;dbname=$bname;charset=utf8mb4';
$options = array(
// Обязательно - режим информирования об ошибках
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
);
$pdo = new PDO($dsn, $username, $password, $options);
// Подготавливаем запрос
$stmt = $pdo->prepare("INSERT INTO mytable (snippet, amp, date, anchor, link)
VALUES (:snippet, :amp, :date, :anchor, :link)"
);
// Используем транзакцию для скорости и консистентности
$pdo->beginTransaction();
// Перебираем массив
foreach ($data as $values) {
// Выполняем запрос с очередной порцией данных
$stmt->execute($values);
}
// Завершаем транзакцию
$pdo->commit();
// Подключение к БД
$dsn = 'mysql:host=localhost;dbname=mydatabase';
$username = 'myusername';
$password = 'mypassword';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$pdo = new PDO($dsn, $username, $password, $options);
// Подготовленный запрос
$stmt = $pdo->prepare("INSERT INTO mytable (snippet, amp, date, anchor, link) VALUES (:snippet, :amp, :date, :anchor, :link)");
// Заполнение параметров запроса значениями из массива
foreach ($data as $values) {
$stmt->bindParam(':snippet', $values['snippet']);
$stmt->bindParam(':amp', $values['amp']);
$stmt->bindParam(':date', $values['date']);
$stmt->bindParam(':anchor', $values['anchor']);
$stmt->bindParam(':link', $values['link']);
// Выполнение запроса
$stmt->execute();
}
# Строку запроса нужно сформировать, добавив (?,?,?,?,?) по количеству элементов в массиве.
$sql = 'insert into table (snippet, amp, date, anchor, link) values (?,?,?,?,?), (?,?,?,?,?)...';
$stmt = $pdo->prepare ($sql);
# массив параметров - добавить все значения из $data так, чтобы порядок следования
# совпадал с values (?,?,?,?,?) в $sql
#/// конечно не так как тут
$params =[$data[0]['snippet'],$data[0]['amp'],$data[0]['date'],$data[0]['anchor'],$data[0]['link'],...]
$stmt->execute($params);
VALUES (:snippet, :amp, :date, :anchor, :link)
используются именованные параметры pdo. Из за этого приходится выполнять вставку в БД несколько раз. Запрос на вставку сразу нескольких строк выполнится быстрее.(?,?,?,?,?)
-анонимные (unnamed) параметры. Значения для них выбираются из массива параметров по порядку следования. Количество знаков ?
и элементов в $params должно быть одинаковым.