импортировать данные CSV в базу данных в соответствии с заголовком - PullRequest
4 голосов
/ 28 октября 2011

вот мои сценарии.

     if (isset($_POST['submit'])) {
     if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
        echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "<br></h1>";
    echo "<h2>Displaying contents:</h2>";
    readfile($_FILES['filename']['tmp_name']);
    echo "<br>";
    echo $headers;
  }


$handle = fopen($_FILES['filename']['tmp_name'], "r");

     $header = fgetcsv($handle);

     while(! feof($handle)){

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $import="INSERT into CSVtest($header[0],$header[1],$header[2],$header[3],$header[4]) 
                     values
                     ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";

    mysql_query($import) or die(mysql_error());
         }

    }

fclose($handle);

echo "Done";

   }

Это способ, которым я вставляю данные в базу данных в соответствии с заголовком, даже если он не расположен так же, как столбец таблицы. Если CSV имеет только «ячейка, имя, фамилия» (и моя таблица имеет только эти 3 столбца), то он все еще работает ... но если есть «ячейка, адрес, компания, имя, фамилия», то он покажет мне неизвестную ошибку столбца.

На самом деле я хотел бы иметь функцию, которая, даже если в csv есть много столбцов, которых нет в таблице, все равно может просто выбрать правильный столбец и вставить в таблицу. Может ли кто-нибудь дать мне подсказку о том, как изменить мой сценарий? Я знаю, что есть много ошибок ... действительно стыдно показывать мой сценарий низкого стандарта ...

Заранее спасибо.

1 Ответ

3 голосов
/ 29 октября 2011

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

http://php.net/manual/en/function.mysql-fetch-field.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...