Как обновить имена столбцов CSV с заголовком таблицы базы данных

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

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

Пожалуйста, помогите мне, я не знаю, как я могу это решить.

Это мой php-код:

$file = $_POST['fileName']; $filename = "../files/" . $file; $list = $_POST['str']; $array_imp = implode(',', $list); $array_exp = explode(',', $array_imp); $fp = fopen("../files/" . $file, "w"); $num = count($fp); for ($c = 0; $c < $num; $c++) { if ($fp[c] !== '') { fputcsv($fp, $array_exp); } } fclose($fp); require_once("../csv/DataSource.php"); $path = "../files/test_mysql.csv"; $dbtable = $ext[0]; $csv = new File_CSV_DataSource; $csv->load($path); $csvData = $csv->connect(); $res=''; foreach($csvData as $key) { print_r($key[1]); $myKey =''; $myVal=''; foreach($key as $k=>$v) { $myKey .=$k.','; $myVal .="'".$v."',"; } $myKey = substr($myKey, 0, -1); $myVal = substr($myVal, 0, -1); $query="insert into tablename($myKey)values($myVal)"; $res= mysql_query($query); 

У вас есть существующий файл, из которого первая строка должна быть заменена.

Об этом в общих чертах говорится здесь:

  • Перезаписать строку в файле с помощью PHP

Немного объяснения (и некоторые советы, которые не рассматриваются в другом вопросе). Чаще всего здесь проще работать с двумя файлами:

  1. Существующий файл (для копирования)
  2. Новый файл, который временно будет использоваться для записи.

Когда это будет сделано, старый файл будет удален, и новый файл будет переименован в имя старого файла.

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

Также вы считаете ошибочным некоторые базовые функции PHP, например, использование count на файловом дескрипторе не поможет вам получить количество строк. Он просто вернет 1.

Вот шаг за шагом, что вам нужно сделать:

  1. Откройте существующий файл для чтения. Просто прочитайте первую строку, чтобы перейти к указателю файла ( fgets )
  2. Откройте новый файл для записи. Напишите в него новые заголовки (как вы уже успешно сделали).
  3. Скопируйте все остальные данные из первого файла в новый, второй файл. PHP имеет функцию для этого, он называется stream_copy_to_stream .
  4. Закройте оба файла.

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

  5. Переименуйте исходный файл в новое имя. Это можно сделать с помощью rename .

  6. Переименуйте файл, на который вы были написаны, в исходное имя файла.

Если вы хотите, вы можете удалить файл, который вы переименовали в 5. – но только если вам это больше не нужно.

Вот и все. Надеюсь, это полезно. Руководство по PHP содержит пример кода для всех упомянутых и связанных функций. Удачи. И если вы не понимаете свой собственный код, сначала используйте руководство, чтобы прочитать об этом. Это уменьшает места, где вы можете вводить ошибки.

Если вам удастся вставить заголовки таблиц, то вы на полпути. Мне кажется, что вам нужно добавить данные после заголовков, например:

$data = $headers;

если ($ Fp [с]! == '')
{$ data. = fputcsv ($ fp, $ array_exp); }

Обратите внимание на точку. перед равенством '=' в выражении if. Это не добавит никаких пустых значений $fp[c] после заголовков.