【问题标题】:PHP: retrieving full path from a selected file to import data to databasePHP:从选定文件中检索完整路径以将数据导入数据库
【发布时间】:2013-03-27 22:10:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: php mysql file-io pathname


    【解决方案1】:

    如果你想让用户上传这个文件,你应该实现文件上传。请查看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'; 
    

    【讨论】:

    • 感谢您的回复。如果可能的话,我实际上不想上传文件,我只需要本地机器上文件的路径。有没有其他方法或者我必须上传文件并使用服务器上文件的路径名。
    • @batsta13 要使用 PHP 处理文件,您应该在安装了 PHP 解释器的服务器上拥有该文件。您可以通过其他方式上传文件,然后您应该使用我在回答中提到的DOCUMENT_ROOT 的第二种方法。
    【解决方案2】:

    可以通过__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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2020-11-05
      • 2021-11-10
      • 2023-03-24
      • 2012-05-16
      • 2010-10-29
      相关资源
      最近更新 更多