Вставка данных CSV в SQL

Я хочу вставить данные из файла csv в мою таблицу sql excel, код работает, но не работает должным образом.

ПРИМЕР:

Данные в файле Excel

Кир

kier @ Noemail @ gmail.com

вывод в таблице Excel

excel_name: kier; kier @ Noemail @ gmail.com

excel_email: пустой

 <?php
 $connect = mysqli_connect('localhost','root','P@ssw0rd@sql','voters');

if (isset($_POST['submit'])) {
  if ($_FILES['file']['name']) {
    $filename = explode(".",$_FILES['file']['name']);
    if ($filename[1] == 'csv') {
      $handle = fopen($_FILES['file']['tmp_name'], "r");
      while ($data= fgetcsv($handle)) {
        $item1 = mysqli_real_escape_string($connect, $data[0]);
        $item2 = mysqli_real_escape_string($connect, $data[1]);
        $sql = "INSERT INTO excel (excel_name, excel_email) VALUES ('$item1','$item2')";
        mysqli_query($connect, $sql);
      }
      fclose($handle);

      print "Rois x Dave!";
    }
  }
}

?>
<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <form method = "POST" enctype = "multipart/form-data">
    <div align = "center">
      <p>upload<input type = "file" name = "file"></p>
      <p><input type = "submit" name = "submit" value = "import"></p>
    </div>
  </form>
</body>
</html>

Проблема в том, что excel_name и excel_email объединяются в один столбец, который является excel_name, пожалуйста, помогите мне решить эту проблему. Тия!

Стоит ли изучать 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
0
44
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Похоже, что $data[0] содержит вашу информацию, которая вам нужна. Я бы просто снова использовал взрыв и разделил данные, прежде чем переместить их в свою БД.

Попробуйте изменить свой цикл while на это:

while ($data= fgetcsv($handle)) {

  $items = explode(';', $data[0]);
  $sql = "INSERT INTO excel (excel_name, excel_email) VALUES ('$items[0]','$items[1]')";
  mysqli_query($connect, $sql);

}

В , есть нет$data[0].

u_mulder 11.12.2018 09:49

Старею, ; не видел. Ответ обновлен.

Joseph_J 11.12.2018 09:50
Ответ принят как подходящий

прочтите документ: http://php.net/manual/en/function.fgetcsv.php

array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\\" ]]]] )

модифицировать

$data= fgetcsv($handle)

к

$data = fgetcsv($handle, $length = 0, $delimiter = ';')

Деломер загруженного вами CSV-файла: нет ,

большое спасибо! @ryan !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! Ты спас мне жизнь, ты искренне благодарен! <3

Queue113 11.12.2018 09:53

Согласно значению kier;kier@[email protected] ваш разделитель - ;. Разделителем по умолчанию для fgetcsv является ,. Итак, вы должны передать ; в качестве аргумента-разделителя:

while ($data = fgetcsv($handle, 4096, ';')) {

Кроме того, всегда полезный для отладки ваших переменных, чтобы увидеть, какое значение они имеют:

var_dump($item1, $item2);

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