我想允许用户选择从中导出数据并保存到数据库中的文件。我找到了以下代码来导入数据:
$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");
我花了很多时间研究这个,但无济于事。
答案 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__
魔法常量获取当前文件的路径;
在你的情况下;
echo __DIR__ . 'people.csv';
另外,您可以考虑使用PHP提供的内置CSV函数; http://php.net/manual/en/function.fgetcsv.php
如果您想跳过完全通过PHP处理文件,MySQL提供了直接从CSV文件导入数据的方法;