[英]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.