php将数据本地填充csv到mysql
我已经尝试了一段时间,在这里问我的第一个问题之前,我尽可能多地调查了各种途径 我有一个非常简单的csv文件。一列,由linux换行符分隔的数据。我想将其导入表codes的第2列passcode。第一列是主键自动递增 以下是简单的csv数据linux行馈送-\nphp将数据本地填充csv到mysql,php,mysql,csv,load-data-infile,Php,Mysql,Csv,Load Data Infile,我已经尝试了一段时间,在这里问我的第一个问题之前,我尽可能多地调查了各种途径 我有一个非常简单的csv文件。一列,由linux换行符分隔的数据。我想将其导入表codes的第2列passcode。第一列是主键自动递增 以下是简单的csv数据linux行馈送-\n A12345678911 A12345678912 A12345678913 A12345678914 这是收集文件的表格 <form enctype="multipart/form-data" action="upload_we
A12345678911
A12345678912
A12345678913
A12345678914
这是收集文件的表格
<form enctype="multipart/form-data" action="upload_webcodes.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="hidden" name="success" value="success" />
Send this file: <input name="webcodeupload" type="file" />
<input type="submit" value="Send File" />
</form>
看来,预期的结果有没有?我已经在phpmyAdmin中尝试了这个查询,如果我删除以子句结尾的行,它就会工作。我怀疑这是phpmyAdmin的问题,我也尝试过在查询中使用和不使用该子句的代码
此外,加载页面时还有一些未定义的索引错误。我有点理解其中的原因,并且在这里阅读了一些说明如何掩盖错误的线索,但是我想知道如何避免它们而不是隐藏它们
任何意见都将不胜感激
谢谢。首先,您已经正确地分析了,文件应该在/tmp/php中。所以,你应该检查一下 /tmp/php文件夹中的权限。 为了让MySQL能够从/tmp/php目录中读取文件,在linux中,不要忘记在/etc/apparmor.d/usr.sbin.mysqld中通过添加以下行/tmp/php/**rwk来设置apparmor配置,
将您的条件更改为:
if ($_FILES['webcodeupload']['type'] == 'text/csv') {
// what you have now
}
您提供的转储显示表单输入字段是webcodeupload,但您的PHP正在检查上传
脚本结束时文件不存在的原因是,php就是这样工作的。必须调用该函数才能将上载的文件实际移动到某个位置,否则PHP会在脚本结束时删除该文件,以防止资源消耗攻击
请注意,if语句中的内容可能还有其他问题,但这会让您更接近。检查mysql\u查询的返回值。负载查询可能失败了,但您没有捕获任何返回值,这意味着您只是假设它全部成功。至少:$result=mysql\u查询。。。或DIEU错误。请参阅此问题的答案:
Array
(
[webcodeupload] => Array
(
[name] => Aimport.csv
[type] => text/csv
[tmp_name] => /Applications/MAMP/tmp/php/phpsp9ezx
[error] => 0
[size] => 52
)
)
if ($_FILES['webcodeupload']['type'] == 'text/csv') {
// what you have now
}