繁体   English   中英

PHP MySQL从CSV文件上传中加载数据输入文件

[英]PHP MySQL LOAD DATA INFILE from CSV File Upload

我正在尝试学习如何将新记录上传到MySQL表,但到目前为止似乎还是失败了。 我的尝试:

$uploaded = $_FILES["fileupload"]["name"];
`$try = mysqli_query($connect,"LOAD DATA INFILE IGNORE $uploaded INTO TABLE allrecords");`

我得到一个错误。 可以预料,因为代码很乱。 我尝试在Google中搜索,但似乎所有人都只提供将每个记录一个一个地插入数据库中的功能。 我使用标签来选择Excel CSV文件(从Excel导出),然后在接收PHP文件中使用此查询。

我使用LOAD DATA INFILE IGNORE,因为我想将新记录上载到数据库,但不包括数据库中已经存在主键的记录。 另外我不确定如何执行LOAD DATA INFILE并匹配每个字段。 是否需要重命名Excel CSV中的每个列名称/标题以匹配数据库中的字段名称?

正如@drew在上面的评论中明智地提到的那样,您在LOAD DATA语句中的文件名周围缺少单引号,这可能会使事情变得混乱。 可能还缺少其他一些东西,这会阻止它正常工作。

尝试改用以下PHP代码:

$uploaded = $_FILES["fileupload"]["name"];
`$try = mysqli_query($connect,"LOAD DATA INFILE IGNORE '$uploaded' INTO TABLE allrecords FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY ',,,\r\n'");`

这是作为单独(可读)查询的LOAD DATA命令:

LOAD DATA INFILE IGNORE '$uploaded'
INTO TABLE allrecords
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY ',,,\r\n'

仔细注意,在双引号OPTIONALLY ENCLOSED BY转义所以PHP不呛。

另外, LOAD DATA在处理数据方面相当原始。 它旨在将原始数据引入MySQL。 对于原始数据的复杂过滤和操作,最好在MySQL适当的地方进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM