Попытка загрузить CSV с некоторыми полями emtpy в MySQL DB с PHP - PullRequest
0 голосов
/ 28 апреля 2020

Я пытался создать эту функцию для загрузки данных в мою базу данных MySQL (на данный момент на моем локальном хосте), некоторые поля в файлах CSV всегда будут пустыми, и я считаю, что причина ошибки, поскольку я попробуйте загрузить файл без пробелов и работает отлично, здесь код сверху загрузить файл CSV

<?php

include('conexion.php');

$fileContacts = $_FILES['fileContacts']; 
$fileContacts = file_get_contents($fileContacts['tmp_name']); 

$fileContacts = explode("\n", $fileContacts);
$fileContacts = array_filter($fileContacts); 

// preparar contactos (convertirlos en array)
foreach ($fileContacts as $contact) 
{
    $contactList[] = explode(",", $contact);
}

// insertar contactos
foreach ($contactList as $contactData) 
{
    $conexion->query("INSERT INTO contacts 
                        (contact_given_name,
                         contact_last_name,
                         contact_phone,
                         contact_email,
                         contact_zip_code)
                         VALUES

                         ('{$contactData[0]}',
                          '{$contactData[1]}', 
                          '{$contactData[2]}',
                          '{$contactData[3]}',
                          '{$contactData[4]}'
                           )

                         "); 
}
?>

Это ошибки при импорте. php

Предупреждение: file_get_contents ( ): Имя файла не может быть пустым в E: \ wamp64 \ www\insert_from_csv \ insert_from_csv \ import. php в строке 6

Примечание: неопределенная переменная: contactList в E: \ wamp64 \ www\insert_from_csv \ insert_from_csv \ import. php в строке 18

Предупреждение: неверный аргумент для foreach () в E: \ wamp64 \ www\insert_from_csv \ insert_from_csv \ import. php в строке 18

I Глубоко ценю вашу помощь!

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

В коде нет ничего плохого. Вы можете добавить значение по умолчанию в вашу базу данных, и это решит проблему. попробуйте что-то вроде:

CREATE TABLE contacts (
contact_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
contact_given_name varchar(255) NOT NULL DEFAULT 'Not Provided',
contact_last_name varchar(255) NOT NULL DEFAULT 'Not Provided',
contact_phone varchar(255) NOT NULL DEFAULT 'Not Provided',
contact_email varchar(255) NOT NULL DEFAULT 'Not Provided',
contact_zip_code int(10) NOT NULL DEFAULT 0
);
0 голосов
/ 28 апреля 2020

Ниже строки 6 добавьте условие -

if($fileContacts !== false)

и поместите оставшуюся часть кода в это условие, чтобы оно выполнялось только в том случае, если содержимое файла не пустое.

PS : Первое предупреждение, которое вы видите, в основном потому, что $ fileContacts ['tmp_name'] получает имя файла, который не существует. Вы можете проверить, существует ли имя файла или нет, используя is_file () , который возвращает true , если это так, и false в противном случае.

Объединение оба условия для использования под строкой 6 будут:

1015 *
...