0

我想允许用户选择一个文件,从中导出数据并将其保存到数据库中。我找到了以下代码来导入数据:

$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");

我花了很多时间研究这个但无济于事。

4

2 回答 2

0

如果你想让用户上传这个文件,你应该实现文件上传。请查看W3Schools 教程以获取说明。

主要思想是从以下位置获取文件路径$_FILES["file"]["tmp_name"]

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

如果您将文件静态存储在 Web 项目文件夹中,则可以使用包含以下内容的路径DOCUMENT_ROOT

$path = $_SERVER["DOCUMENT_ROOT"] + 'relative/path/to/your/file/' + 'people.csv'; 
于 2013-03-27T22:17:02.210 回答
0

可以通过__DIR__魔术常量获取当前文件的路径;

魔术常数

在你的情况下;

echo __DIR__ . 'people.csv';

此外,您可以考虑使用 PHP 提供的内置 CSV 函数; http://php.net/manual/en/function.fgetcsv.php

如果您想完全跳过通过 PHP 处理文件,MySQL 提供了直接从 CSV 文件导入数据的方法;

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

于 2013-03-27T22:31:11.627 回答