我正在尝试上传CSV文件以使用php将记录保存到数据库中 . 我使用了sql方法 LOAD DATA INFILE
但它无论如何都没有用 .
Index.php的格式为 <input name='csv' type='file' id='csv'/>
.
我的文件上传有5个字符串列和2个整数(最后一个),而且它只有两行, Headers 和值 .
它们是'usuarios'数据库中的 NOT NULL
字段 . 所以这里's the problem, when I trying to add a record (for instance: ' bea')它说
.....(sooo long)...... K8docProps / app.xmlPK第1行的列'NombreUsuario'的数据太长
是的,readfile显示,所以我改变了每一列的细节(我不认为这是问题)并且放置值 VARCHAR(200) / INTEGER(200)
,不管它不会让我放更长的因为我试过 Specified key was too long; max key length is 767 bytes
.
这是我的代码,我用其他例子做了:
subirCSV.php
require ('../cabses.php');
require ('../conecta.php');
if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['csv']['tmp_name'])) {
echo "File ". $_FILES['csv']['name'] ." uploaded successfully.";
echo "Displaying contents:";
readfile($_FILES['csv']['tmp_name']);
}
$handle = fopen($_FILES['csv']['tmp_name'], "r");
$flag = true;
while (($data = fgetcsv($handle, 1000, " ")) !== FALSE) {
if($flag) { $flag = false; continue; }
$import="INSERT INTO usuarios (NombreUsuario,PassUsuario,EmailUsuario,Nombre,Apellidos,IdPropietario,IdRol) VALUES
(
'".trim($data[0], '"')."',
'".trim($data[1], '"')."',
'".trim($data[2], '"')."',
'".trim($data[3], '"')."',
'".trim($data[4], '"')."',
'".trim($data[5], '"')."',
'".trim($data[6], '"')."'
)
";
$oConni->query($import) or die(mysqli_error($oConni)."____________".$import);
}
fclose($handle);
print "Import done";
} else {
print "Not working";
}
也许它是针对UTF-8编码的?
这是我在StackOverFlow中的第一个问题,所以来自西班牙的大家好!谢谢你!
2 回答
好吧,我终于完成了!首先,我意识到分隔符是
;
并且addslashes($data[0])
工作正常 .您可以使用我的代码并尝试它 .
Try this