Php 这个csv到mysql上传有什么问题?
我构建了这个脚本来上传.csv文件并直接将它们发送到我的数据库。 但它不会在我的桌子上写任何东西。 如果我把文件上传到我的服务器,然后写“file.csv”而不是“$file”,它就可以正常工作。。 但我想通过表单上传它们。 有人能帮我吗 表格:Php 这个csv到mysql上传有什么问题?,php,mysql,csv,file-upload,upload,Php,Mysql,Csv,File Upload,Upload,我构建了这个脚本来上传.csv文件并直接将它们发送到我的数据库。 但它不会在我的桌子上写任何东西。 如果我把文件上传到我的服务器,然后写“file.csv”而不是“$file”,它就可以正常工作。。 但我想通过表单上传它们。 有人能帮我吗 表格: CSV导入 imp.php: <?php $delimiter = ','; $db = new mysqli('host', 'user', 'pw', 'db'); $file= $_FILES[file][temp_name];
CSV导入
imp.php:
<?php
$delimiter = ',';
$db = new mysqli('host', 'user', 'pw', 'db');
$file= $_FILES[file][temp_name];
if (($handle = fopen($file, 'r')) !== FALSE) {
while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
foreach($data as $i => $content) {
$data[$i] = $db->real_escape_string($content);
}
$db->query("INSERT INTO table VALUES('" . implode("','", $data) . "');");
}
fclose($handle);
}
?>
我强烈建议使用加载数据填充
语法,因为您的服务器上有一个结构良好的CSV
比如:
LOAD DATA LOCAL INFILE '/path/to/local/file'
INTO TABLE table
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
这将允许您通过单个查询上载所有内容。另外请注意,如果您的MySQL服务器和应用程序服务器位于同一台计算机上,您可以省略LOCAL
选项,因为MySQL可以直接从指定路径的文件系统读取文件(假设它具有权限)
这样就不需要打开文件并对其进行迭代
如果您不想这样做,我至少建议您进行批量插入并一次添加多行(而不是对每行进行一次插入查询)。这是$\u FILES['file']['tmp\u name']
看
ie nottemp\u name
您可以使用var\u dump($\u文件)吗?让我们看看。。。无法验证上载是否成功。无法验证数据库连接是否已建立。验证查询调用是否成功失败。正在使用“
回送包含字符串的变量。。。我们要继续吗?上传成功!数据库连接正常!我刚做了一个编辑。。回显“$file”;不是程序的一部分。引用字符串失败。$\u FILES['file']['temp\u name']
不会更改任何内容。:/出现此错误:列计数与第1行的值计数不匹配,但我尝试在没有表单的情况下上载相同的值,结果成功。。不明白。。这怎么可能呢?你必须上传一个不同列数的文件!不我首先将mysql导出为CSV,然后尝试导入它。。。应为相同数量的串通或??)也许你的CSV创建得不完全正确?你真的做对了吗?也可能不是所有的行都有正确的列数?(即没有足够的逗号)phpMyAdmin将其导出为CSV。。你认为我能相信吗?
LOAD DATA LOCAL INFILE '/path/to/local/file'
INTO TABLE table
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'