PHP:从选定文件中检索完整路径以将数据导入数据库

时间:2013-03-27 22:10:28

标签: php mysql file-io pathname

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

$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 个答案:

答案 0 :(得分:0)

如果您想让用户上传此文件,您应该实现文件上传。请查看W3Schools Tutorial以获取相关说明。

主要思想是从$_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'; 

答案 1 :(得分:0)

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

Magic constants

在你的情况下;

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