使用PHP将CSV数据导入mySQL

使用PHP将CSV数据导入mySQL,php,mysql,csv,Php,Mysql,Csv,可能重复: update我现在有了fgetcsv()函数,可以正确地读取CSV文件(显示正确的输出、字段等),那么我应该在mysql_查询(“插入…”)中滑到哪里;进入方程式 仅供参考:mySQL在DreamHost上运行,但在与我的DreamHost web主机不同的服务器上运行,我没有进行加载数据填充的权限。我不打算改变托管公司 我对PHP和mySQL都是新手,而且还可以亲身学习。我在这里看到了很多答案,但大多数建议使用加载数据填充,我不能使用。我可以通过phpMyAdmin成功上传和导入

可能重复:

update我现在有了fgetcsv()函数,可以正确地读取CSV文件(显示正确的输出、字段等),那么我应该在mysql_查询(“插入…”)中滑到哪里;进入方程式

仅供参考:mySQL在DreamHost上运行,但在与我的DreamHost web主机不同的服务器上运行,我没有进行加载数据填充的权限。我不打算改变托管公司

我对PHP和mySQL都是新手,而且还可以亲身学习。我在这里看到了很多答案,但大多数建议使用加载数据填充,我不能使用。我可以通过phpMyAdmin成功上传和导入有问题的CSV,当我尝试通过PHP脚本上传/导入它时,它将无法工作(因为通过DreamHost的权限问题)

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


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

没错,您应该解析每一行。这还将使您有机会验证数据,因此用户不能使用SQL注入

您可以使用:

我也用dreamhost做一些事情。但当你准备好成长一点的时候,就毕业于AWS


另请注意。我知道CSV很流行,但如果有机会限制用户上传XML(或json),它将使解析工作更容易。当然,如果对公众开放,这并不总是可行的,因为人们在使用XML时遇到了麻烦。但是如果数据源是专业的,我强烈建议使用XML或JSON而不是CSV。

你说得对,你应该解析每一行。这还将使您有机会验证数据,因此用户不能使用SQL注入

您可以使用:

我也用dreamhost做一些事情。但当你准备好成长一点的时候,就毕业于AWS


另请注意。我知道CSV很流行,但如果有机会限制用户上传XML(或json),它将使解析工作更容易。当然,如果对公众开放,这并不总是可行的,因为人们在使用XML时遇到了麻烦。但是,如果数据源是专业的,我强烈建议使用XML或JSON而不是CSV。

您将需要查看fgetcsv()。有趣的是,在这篇文章中,第一条评论是一个函数,它正是你上面所概述的


您需要查看fgetcsv()。有趣的是,在这篇文章中,第一条评论是一个函数,它正是你上面所概述的


如果您确实无法使用LOAD DATA Inflie MySQL函数,则必须使用php导入CSV文件。最简单的方法可能是使用PHP函数。

如果您确实无法使用LOAD DATA Inflie MySQL函数,则必须使用PHP导入CSV文件。最简单的方法可能是使用PHP函数。

PS.fgetcsv不会根据CSV RFC进行解析。作为一个已经编写了CSV解析器并找到了解决方法的人,最好使用RFC.PS后面的另一个解析器。fgetcsv不根据CSV RFC进行解析。作为一个写过CSV解析器并发现了困难的人,你最好使用一个不同的解析器,遵循RFC。请原谅另一个新手问题,但我现在有fgetcsv()函数可以正常工作并正确读取CSV文件(显示正确的输出、字段等),那么我应该在mysql_查询(“插入…”)中插入到哪里;进入方程式?正如mikeds指出的那样,
fgetcsv()
页面上的第一条注释说明了如何做到这一点:您应该在循环之前创建一个变量,并将每一行的值添加到该变量中(这样就可以正确地执行。然后在循环之后调用
mysql\u query()
使用该变量。当前的读者应该注意,mysql_uuu函数已被弃用,应该放弃使用mysqli或PDO_uMySQL。我将走这条路。请原谅另一个新手问题,但我现在让fgetcsv()函数正常工作并正确读取CSV文件(显示正确的输出、字段等)那么,我应该将mysql_查询(“插入…”)滑到方程式中的什么地方呢?正如mikeds指出的那样,
fgetcsv()
页面上的第一条注释说明了如何做到这一点。:)您应该在循环之前创建一个变量,并将每一行的值添加到该变量中(以便正确。然后在循环之后调用
mysql_查询()
使用该变量。当前的读者应该注意,mysql_uu函数已被弃用,应该放弃使用mysqli或PDO_uMySQL。