У меня есть этот код для вставки данных из CSV-файла в базу данных. Поскольку CSV может содержать тысячи записей, я пытаюсь реализовать пакетную вставку следующим образом.
$this->_connection->beginTransaction();
$sql = "INSERT INTO dbtable (col1,col2) VALUES (:value1,:value2)";
$stmt = $this->_connection->prepare($sql);
foreach ($requestArray['csv'] as $data) {
$stmt->bindParam(':value1', $data['csvCol1']);
$stmt->bindParam(':value2', $data['csvCol2']);
$stmt->execute();
}
$this->_connection->commit();
Переменная $ requestArray ['csv'] содержит все записи запроса CSV post. Кажется, этот код работает так, как должен. Хотя я пытаюсь улучшить это, потому что я хочу, чтобы пользователь знал, сколько записей не удалось вставить в базу данных и можно ли показать, какие записи не удалось. Предположим, что это дублированный ключ, неверные данные или вообще любая ошибка, которая может возникнуть в результате этой процедуры.