Intereting Posts
Метод blade.php, выводящий результат в форму Как установить активный лист без загрузки файла xlsx? Как можно использовать многопоточность в PHP-приложениях Многопользовательские сеансы PHP; ini_set Не работает? Обзор сайта для первого пользователя для всех страниц PHP mcrypt установка и настройка проблем с laravel Является ли порядок INPUTS в POST гарантированным для ввода массива в PHP? Автоматическая аутентификация пользователя после регистрации PHP: разделение даты и времени на значение timestamp в mysql Получить текстовое поле Текст с помощью ajax при нажатии кнопки программа can not start, потому что php5.dll отсутствует Создание пользовательского расширения PHP (.so) Как предотвратить запуск скрипта PHP более одного раза? Отправка писем из mailgun из приложения laravel 5.2 Предупреждение: mysql_select_db () Доступ запрещен для пользователя '' @ 'localhost' (с использованием пароля: НЕТ)

импортировать данные txt / csv в базу данных в соответствии с заголовком таблицы базы данных

Мой файл tex / csv имеет 3 столбца first_name , last_name и address но в моей таблице базы данных есть два столбца first_name и last_name . Я хочу иметь функцию, что даже в столбцах csv есть много столбцов, которые не существуют в таблице, они все равно могут выбрать правильный столбец и вставить в таблицу. Кто-то советует мне использовать php mysql_fetch_field . Я пытаюсь mysql_fetch_field и я могу собрать имя столбца таблицы базы данных, но я не могу вставить данные в соответствии с заголовком таблицы.

  set_time_limit(0); include "connection.php"; //Connect to Database if (isset($_POST['submit'])) { // Gel table current column name $query = "select * from month"; $result=mysql_query($query) or die (mysql_error()); $i = 0; while ($i < mysql_num_fields($result)) { $meta = mysql_fetch_field($result, $i); $a=$meta->name; $i++; } //Upload File if (is_uploaded_file($_FILES['filename']['tmp_name'])) { echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>"; echo "<h2>Displaying contents:</h2>"; readfile($_FILES['filename']['tmp_name']); } //Import uploaded file to Database $handle = fopen($_FILES['filename']['tmp_name'], "r"); $header = fgetcsv($handle); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $import="INSERT into month($header[0],$header[1]) values('$data[0]','$data[1]')"; mysql_query($import) or die(mysql_error()); } fclose($handle); echo "Import done"; } 

Я не уверен, что получаю то, что вам нужно, но я думаю, вы должны использовать MySQL Load Data Infile для загрузки этого CSV следующим образом:

 LOAD DATA LOCAL INFILE 'your_file.csv' INTO TABLE your_table FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' (field1, field2, field3) 

Вот как я работаю с CSV и это хорошо работает.

Проверьте эту ссылку .

Вы можете использовать команду LOAD DATA INFILE MySQL. Как указано в руководстве:

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

  LOAD DATA INFILE 'file.txt'
   INTO TABLE t1
   (column1, @dummy, column2, @dummy, column3); 

Поэтому в вашем случае:

 LOAD DATA INFILE '/path/to/file' INTO TABLE month FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES (first_name, last_name, @dummy);