PHP: Как импортировать данные файла CSV в базу данных MySQL с помощью PHP
Импорт данных из файла CSV в базу данных mysql с помощью php; В этом уроке мы узнаем, как импортировать данные из файла CSV в базу данных MySQL с помощью PHP-скрипта.
Как импортировать данные из файла CSV в базу данных MySQL с помощью PHP
Выполните следующие шаги, чтобы импортировать данные из файла CSV в базу данных MySQL с помощью PHP скрипта или кода:
Шаг 1 - Создание проекта PHP
Прежде всего, зайдите в каталог веб-сервера и создайте каталог php с именем demo.
Шаг 2 - Создание таблицы в базе данных
Создайте таблицу в вашей базе данных; зайдите в PHPMyAdmin и создайте таблицу users со следующими полями: name, email, mobile.
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`phone` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
`status` enum('Active','Inactive') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Active',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Шаг 3 - Создание файла подключения к базе данных
Создайте файл с именем db.php и добавьте в него приведенный ниже код.
<?php
$servername='localhost';
$username='root';
$password='';
$dbname = "my_db";
$conn=mysqli_connect($servername,$username,$password,"$dbname");
if(!$conn){
die('Could not Connect MySql Server:' .mysql_error());
}
?>
Шаг 4 - Создание HTML-формы для загрузки CSV-файла
Создайте простую HTML форму для загрузки файла csv и добавьте следующий код в файл index.php:
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<title>Import CSV File into MySQL using PHP</title>
<style>
.custom-file-input.selected:lang(en)::after {
content: "" !important;
}
.custom-file {
overflow: hidden;
}
.custom-file-input {
white-space: nowrap;
}
</style>
</head>
<body>
<div class="container">
<form action="upload.php" method="post" enctype="multipart/form-data">
<div class="input-group">
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFileInput" aria-describedby="customFileInput" name="file">
<label class="custom-file-label" for="customFileInput">Select file</label>
</div>
<div class="input-group-append">
<input type="submit" name="submit" value="Upload" class="btn btn-primary">
</div>
</div>
</form>
</div>
</body>
</html>
Шаг 5 - Создание PHP-файла для импорта данных из файла CSV в базу данных
Создайте один файл upload.php, который будет использоваться для чтения файла csv и вставки всех данных файла csv в базу данных MySQL. Добавьте следующий код в файл upload.php:
<?php
// подключаем файл конфигурации базы данных mysql
include_once 'db.php';
if (isset($_POST['submit']))
{
// Разрешенные типы mime
$fileMimes = array(
'text/x-comma-separated-values',
'text/comma-separated-values',
'application/octet-stream',
'application/vnd.ms-excel',
'application/x-csv',
'text/x-csv',
'text/csv',
'application/csv',
'application/excel',
'application/vnd.msexcel',
'text/plain'
);
// Проверяем, является ли выбранный файл CSV-файлом
if (!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'], $fileMimes))
{
// Открываем загруженный CSV-файл в режиме только для чтения
$csvFile = fopen($_FILES['file']['tmp_name'], 'r');
// Пропускаем первую строку
fgetcsv($csvFile);
// Парсим (разбираем) данные из файла CSV построчно
while (($getData = fgetcsv($csvFile, 10000, ",")) !== FALSE)
{
// Получаем данные строки
$name = $getData[0];
$email = $getData[1];
$phone = $getData[2];
$status = $getData[3];
// Если пользователь с таким же email уже существует в базе данных
$query = "SELECT id FROM users WHERE email = '" . $getData[1] . "'";
$check = mysqli_query($conn, $query);
if ($check->num_rows > 0)
{
mysqli_query($conn, "UPDATE users SET name = '" . $name . "', phone = '" . $phone . "', status = '" . $status . "', created_at = NOW() WHERE email = '" . $email . "'");
}
else
{
mysqli_query($conn, "INSERT INTO users (name, email, phone, created_at, updated_at, status) VALUES ('" . $name . "', '" . $email . "', '" . $phone . "', NOW(), NOW(), '" . $status . "')");
}
}
// Закрываем открытый CSV-файл
fclose($csvFile);
header("Location: index.php");
}
else
{
echo "Please select valid file";
}
}
Вывод
В этом руководстве мы узнали, как загрузить файл csv и импортировать/вставить данные в базу данных MySQL с помощью PHP.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.