php запись в базу данных с csv файла
Есть вот такой вот файл dataset-min.csv
с данными по типу
category,firstname,lastname,email,gender,birthDate
toys,Maribel,Towne,dagmar75@gmail.com,female,1972-05-05
electronics,Martina,Heller,dreinger@yahoo.com,female,1990-11-27
пробую писать их в созданую базу данных mySQL
вот таким php
<?php
// Подключение к базе данных
$host = "localhost";
$user = "root";
$password = "";
$database = "test_users";
$port = 3306;
$conn = mysqli_connect($host, $user, $password);
// Проверка соединения
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Проверка существования базы данных
$sql = "CREATE DATABASE IF NOT EXISTS $database";
if (mysqli_query($conn, $sql)) {
echo "Database created successfully </br>";
} else {
echo "Error creating database: " . mysqli_error($conn);
}
///////////////////
$conn = mysqli_connect($host, $user, $password, $database);
// Проверка существования таблицы
$table = "users";
$sql = "SHOW TABLES LIKE '$table'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) == 0) {
// Таблица не существует
// Создание таблицы
$sql_create_table = "CREATE TABLE $table (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
category VARCHAR(30) NOT NULL,
firstname VARCHAR(50) NOT NULL,
lastname VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
gender ENUM('male', 'female') NOT NULL,
birthDate DATE NOT NULL
)";
} else {
// Таблица существует
echo "Table $table already exists";
}
// Открытие CSV файла для чтения данных
$csv_file = fopen("dataset.csv", "r");
// Чтение строк из CSV файла и заполнение таблицы данными
while (($data = fgetcsv($csv_file, 1000, ",")) !== FALSE) {
$category = mysqli_real_escape_string($conn, $data[0]);
$firstname = mysqli_real_escape_string($conn, $data[1]);
$lastname = mysqli_real_escape_string($conn, $data[2]);
$email = mysqli_real_escape_string($conn, $data[3]);
$gender = mysqli_real_escape_string($conn, $data[4]);
// Проверяем, что строка 'birthDate' не пустая
if (!empty($data[5])) {
$birthDate = date('Y-m-d', strtotime($data[5]));
} else {
$birthDate = '0000-00-00'; // Или можно использовать значение NULL
}
$sql_insert = "INSERT INTO users (category, firstname, lastname, email, gender, birthDate)
VALUES ('".$category."', '".$firstname."', '".$lastname."', '".$email."', '".$gender."', '".$birthDate."')";
mysqli_query($conn, $sql_insert);
}
// Закрытие файла CSV
fclose($csv_file);
// Закрытие соединения с базой данных
mysqli_close($conn);
///////////////
?>
оно вроде как и записывает, но в процессе проверки ругаеться, на формат $birthDate, что не так с форматом, может кто-то подсказать как поправить код что б ошибка ушла ? *файл *.csv какой приходит, его менять нельзя.
Error inserting record: Incorrect date value: '' for column 'birthDate' at row 1
Источник: Stack Overflow на русском