【问题标题】:Using PHP to import CSV data into mySQL [duplicate]使用 PHP 将 CSV 数据导入 mySQL [重复]
【发布时间】:2011-05-10 16:47:51
【问题描述】:

可能重复:
How to import csv files selected by user to database

更新我现在可以使用 fgetcsv() 函数并正确读取 CSV 文件(显示正确的输出、字段数等),所以我应该在 mysql_query("INSERT. ....");进入等式?

供参考:mySQL 在 DreamHost 上运行,但在与我的 DreamHost 网络托管不同的服务器上运行,我无权执行 LOAD DATA INFILE。我不打算更换托管公司。

我对 PHP 和 mySQL 都很陌生,并且正在动手学习。我在这里查看了很多答案,但大多数人建议使用我无法使用的 LOAD DATA INFILE。我可以通过 phpMyAdmin 成功上传和导入有问题的 CSV,当我尝试通过 PHP 脚本上传/导入它时,它不起作用(因为通过 DreamHost 的权限问题)。

使用我的应用程序,用户将上传 CSV 格式的结构化列表。这是整个应用程序的关键。由于该权限问题,看来我需要逐行读取上传的文件并为每一行执行插入操作。

我真的不知道从哪里开始。一旦用户选择了他们的文件并按下上传,这个脚本就会运行。它将文件移动到适当的目录并将完整文件的路径存储在 $path 中。

【问题讨论】:

    标签: php mysql csv


    【解决方案1】:

    你会想要查看 fgetcsv()。有趣的是,在这篇文章中,第一条评论是一个完全按照您上面概述的功能。

    http://php.net/manual/en/function.fgetcsv.php

    【讨论】:

      【解决方案2】:

      你是对的,你应该解析每一行。这也将使您有机会验证数据,因此用户无法使用 SQL 注入。

      你可以使用:

      http://code.google.com/p/php-csv-parser/

      我也将 dreamhost 用于某些事情。但是,当您准备好一点点成长时,请毕业到 AWS。

      还有一点说明。我知道 CSV 很流行,但如果有任何机会可以限制用户上传 XML(或 json),解析时会更轻松。当然,如果它向公众开放,这并不总是可行的,因为人们在使用 XML 时遇到了麻烦。但如果数据来源是专业的,我强烈建议使用 XML 或 JSON 而不是 CSV。

      【讨论】:

      • 附言。 fgetcsv 不根据 CSV RFC 进行解析。作为编写 CSV 解析器并发现困难的人,您最好使用遵循 RFC 的不同解析器。
      【解决方案3】:

      如果你真的不能使用 LOAD DATA INFILE MySQL 功能,你将不得不使用 php.ini 导入 CSV 文件。最简单的方法可能是使用 PHP fgetcsv() 函数。

      【讨论】:

      • 我要走这条路。原谅另一个新手问题,但我现在让 fgetcsv() 函数正常工作并正确读取 CSV 文件(显示正确的输出、字段数等),所以我在 mysql_query("INSERT ....." );进入方程?
      • 正如 mikeds 指出的 fgetcsv() 页面上的第一条评论显示了如何执行此操作。 :) 您应该在循环之前创建一个变量并将每一行的值添加到该变量(以便syntax 是正确的。然后在循环之后使用该变量调用mysql_query()
      • 当前读者应该注意,mysql_ 函数已被弃用,应该放弃以支持 mysqli 或 PDO_mysql。
      猜你喜欢
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多