Импортировать csv с php в mysql

Я импортирую файл csv в таблицу mysql с помощью php. Теперь я собираюсь добавить несколько строк, как в csv. csv не имеет заголовка.

Я оставляю скрипт того, как я создал таблицу в mysql:

CREATE TABLE `Areceber` (
  `Id` int NOT NULL AUTO_INCREMENT,
  `N_utente` varchar(45) DEFAULT NULL,
  `Ano` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

сейчас поставлю html скрипт:

<form method = "post" action = "conexaoexcel1.php" enctype = "multipart/form-data">
  <input type = "file" name = "file"/>
  <input type = "submit" name = "submit_file" value = "Submit"/>
</form>

а теперь страница conexaoexcel1.php:

$file = $_FILES["file"]["tmp_name"];
$file_open = fopen($file,"r");
while(($csv = fgetcsv($file_open, 1000, ";")) !== false)
{

    foreach ($csv as $key => $value){   

        $Id = str_getcsv($value[0], ',');       
        var_dump($Id);

    }
}

Теперь, когда я var_dump первый столбец, он возвращается следующим образом:

array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "2" } array(1) { [0]=> string(1) "3" } array(1) { [0]=> string(1) "4" } array(1) { [0]=> string(1) "5" } array(1) { [0]=> string(1) "6" } array(1) { [0]=> string(1) "7" } array(1) { [0]=> string(1) "8" } array(1) { [0]=> string(1) "9" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(1) "2" }

До строки с номером девять он возвращает нормально, но когда он начинается со строки с номером 10, он возвращает только число 1 без нуля и так далее. Можете ли вы помочь решить проблему?

$value уже будет содержать 10 для этого столбца в этой строке, ваша ошибка в том, что вы смотрите только на первый символ (точнее, байт) этого столбца с $value[0]. И то, что вы вызываете str_getcsv в этот момент, с самого начала не имеет смысла — fgetcsv уже разобрал строку в массив.
CBroe 24.11.2022 12:40

зачем ты это делаешь $value[0] ? Это вернет первый символ строки.

OMi Shah 24.11.2022 12:40

@CBroe Но если я поставлю $Id = $value;, он вернет все в CSV. Когда вставляю в базу, выдает ошибку, потому что пытается вставить все в первую колонку базы

Anónimo 24.11.2022 12:44

Это потому, что ваш цикл foreach перебирает значения всех столбцов строки, которую вы только что прочитали. Если вы хотите работать только со значением первого столбца, тогда не перебирайте их все, а просто напрямую обращайтесь к первому.

CBroe 24.11.2022 12:48

@C Broe Я намерен вставить первый столбец csv в столбец «Id» mysql, второй столбец csv в столбец N_utente mysql и третий столбец csv в столбец Ano mysql. Ты понимаешь?

Anónimo 24.11.2022 12:54

Можете ли вы показать фактическое содержимое файла CSV, это могут быть разделители, которые вы используете.

Nigel Ren 24.11.2022 12:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
139
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш $csv уже является массивом данных, и для вывода первого столбца используйте $csv[0] без цикла.

$file = $_FILES["file"]["tmp_name"];
$file_open = fopen($file,"r");
while(($csv = fgetcsv($file_open, 1000, ";")) !== false)
{

    $Id = $csv[0];       
    var_dump($Id);
}

Просто проверьте правильность вашего разделителя. Если это строка изменения с разделителями-запятыми

while(($csv = fgetcsv($file_open, 1000, ";")) !== false)

к

while(($csv = fgetcsv($file_open, 1000, ",")) !== false)

В противном случае это должно работать.

Вы проверяли разделитель? Он вернет все данные, если вы установили неправильный разделитель

Ultrazz008 24.11.2022 12:55

Я использовал запятую и должен был поставить ;. Это было именно так. Спасибо

Anónimo 24.11.2022 12:57

Другие вопросы по теме