更新我现在让fgetcsv()函数正常工作并正确读取CSV文件(显示正确的输出,字段数等),所以我在mysql_query(“INSERT”中)滑入。 ......“);进入等式?
供参考:mySQL在DreamHost上运行,但在与DreamHost虚拟主机不同的服务器上运行,我无权执行LOAD DATA INFILE。我不打算改变托管公司。
我对PHP和mySQL都很陌生,并且学习动手。我在这里看了很多答案,但大多数建议使用LOAD DATA INFILE,我无法使用。我可以通过phpMyAdmin成功上传和导入有问题的CSV,当我尝试通过PHP脚本上传/导入它时,它将无法工作(因为通过DreamHost的权限问题)。
通过我的应用程序,用户将以CSV格式上传结构化列表。这是整个应用程序的关键所在。由于该权限问题,我看起来需要逐行读取上传的文件并为每一行执行INSERT。
我真的不知道从哪里开始。一旦用户选择了他们的文件并按下上传,该脚本就会运行。它将文件移动到适当的目录,并将完整文件的路径存储在$ path中。
答案 0 :(得分:2)
你是对的,你应该解析每一行。这也将使您有机会验证数据,以便用户无法使用SQL注入。
您可以使用:
http://code.google.com/p/php-csv-parser/
我也使用dreamhost做一些事情。但是,当你准备好成长时,毕业于AWS。
进一步说明。我知道CSV很受欢迎,但是如果你有可能限制你的用户上传XML(或json),它将使你的工作在解析时更容易。当然,如果它对公众开放,并不是总是可行的,因为人们对XML有困难。但如果数据源是专业的,我强烈建议使用XML或JSON而不是CSV。
答案 1 :(得分:2)
您需要查看fgetcsv()。有趣的是,截至这篇文章,第一个评论是一个完全按照你上面概述的功能。
答案 2 :(得分:1)
如果您确实无法使用LOAD DATA INFILE MySQL功能,则必须使用php导入CSV文件。最简单的方法可能是使用PHP fgetcsv()函数。