Я столкнулся с этой проблемой несколько прошлых дней и теперь разочаровываю, потому что я должен это делать.
Мне нужно обновить имя столбца файла 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, например, использование count
на файловом дескрипторе не поможет вам получить количество строк. Он просто вернет 1.
Вот шаг за шагом, что вам нужно сделать:
fgets
) stream_copy_to_stream
. Закройте оба файла.
Теперь проверьте, является ли новый файл тем, что вы ищете. Когда все это работает, вам нужно добавить еще несколько шагов:
Переименуйте исходный файл в новое имя. Это можно сделать с помощью rename
.
Если вы хотите, вы можете удалить файл, который вы переименовали в 5. – но только если вам это больше не нужно.
Вот и все. Надеюсь, это полезно. Руководство по PHP содержит пример кода для всех упомянутых и связанных функций. Удачи. И если вы не понимаете свой собственный код, сначала используйте руководство, чтобы прочитать об этом. Это уменьшает места, где вы можете вводить ошибки.
Если вам удастся вставить заголовки таблиц, то вы на полпути. Мне кажется, что вам нужно добавить данные после заголовков, например:
$data = $headers;
если ($ Fp [с]! == '')
{$ data. = fputcsv ($ fp, $ array_exp); }
Обратите внимание на точку. перед равенством '=' в выражении if. Это не добавит никаких пустых значений $fp[c]
после заголовков.