我正在尝试学习如何将新记录上传到MySQL表,但到目前为止似乎失败了。我的尝试:
$uploaded = $_FILES["fileupload"]["name"];
`$try = mysqli_query($connect,"LOAD DATA INFILE IGNORE $uploaded INTO TABLE allrecords");`
我收到错误。虽然代码很乱,但预计会如此。我尝试在谷歌搜索,但似乎只提供每个记录逐个插入数据库。我使用标签选择Excel CSV文件(从Excel导出),然后在接收的PHP文件中使用此查询。
我使用LOAD DATA INFILE IGNORE,因为我想将新记录上传到数据库,但不包括数据库中已存在主键的记录。此外,我不知道如何做LOAD DATA INFILE并匹配每个字段。我是否需要重命名Excel CSV中的每个列名称/标题以匹配数据库中的字段名称?
答案 0 :(得分:1)
正如@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中正常工作。