PHP: получение полного пути из выбранного файла для импорта данных в базу данных

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

$fp = fopen("people.csv", "r");

while ($line = fgets($fp)) {
$char =  split("\t",$line,4); 
 list($name, $age,$height,$date) = $char;
//Split the line by the tab delimiter and store it in our list
$sql = "insert into people(name,age,height,date) values('$name','$age','$height','$date')"; // Generate our sql string
mysql_query($sql) or die(mysql_error()); // Execute the sql
//fclose($line);

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

$fp = fopen("people.csv", "r");

Я провел много времени, исследуя это, но безрезультатно.

2 ответа

Если вы хотите разрешить пользователям загружать этот файл, вы должны осуществить загрузку файла. Пожалуйста, ознакомьтесь с W3Schools Tutorial для получения инструкций.

Основная идея - получить путь к файлу от $_FILES["file"]["tmp_name"]:

$fp = fopen($_FILES["file"]["tmp_name"], "r");

Если вы статически храните свой файл в папке вашего веб-проекта, вы можете использовать путь, включая ваш DOCUMENT_ROOT:

$path = $_SERVER["DOCUMENT_ROOT"] + 'relative/path/to/your/file/' + 'people.csv'; 

Вы можете получить путь к текущему файлу через __DIR__ магическая постоянная;

Магические константы

В твоем случае;

echo __DIR__ . 'people.csv';

Кроме того, вы можете рассмотреть возможность использования встроенных функций CSV, которые предлагает PHP; http://php.net/manual/en/function.fgetcsv.php

Если вы хотите вообще пропустить обработку файла через PHP, MySQL предлагает способы прямого импорта данных из файла CSV;

https://dev.mysql.com/doc/refman/5.5/en/load-data.html

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