gpt4 book ai didi

PHP - 将 csv 导入数据库数据时间过长

转载 作者:可可西里 更新时间:2023-11-01 07:34:59 26 4
gpt4 key购买 nike

我正在尝试上传 CSV 文件以使用 php 将记录保存到数据库中。我用的sql方法LOAD DATA INFILE但无论如何都没有用。

Index.php 的格式为 <input name='csv' type='file' id='csv'/> .

我上传的文件有 5 个字符串列和 2 个整数(最后一个),而且它只有两行,标题和值。

它们是字段 NOT NULL在'usuarios'数据库中。所以这就是问题所在,当我尝试添加一条记录(例如:'bea')时,它说

.....(sooo long)......K8docProps/app.xmlPK Data too long for column 'NombreUsuario' at row 1

是的,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 中的第一个问题,来自西类牙的大家好!谢谢!

最佳答案

好吧,我终于完成了!首先,我意识到分隔符是 ; 并且 addslashes($data[0]) 工作正常。

您可以使用我的代码并尝试一下。

    require ('../conecta.php');    if (isset($_POST['submit'])) {            if (is_uploaded_file($_FILES['csv']['tmp_name'])) {                $handle = fopen($_FILES['csv']['tmp_name'], "r");                $flag = true;                while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {                    if($flag) { $flag = false; continue; }                    $sql="INSERT INTO usuarios (NombreUsuario,PassUsuario,EmailUsuario,Nombre,Apellidos,IdPropietario,IdRol) VALUES                                     (                                        '".addslashes($data[0])."',                                        '".addslashes(md5($data[1]))."',                                        '".addslashes($data[2])."',                                        '".addslashes($data[3])."',                                        '".addslashes($data[4])."',                                        '".addslashes($data[5])."',                                        '".addslashes($data[6])."'                                    )                                ";                    $oConni->query($sql);                }                fclose($handle);                header('Location:../index.php');            } else {                print "No funciona";            }    }

关于PHP - 将 csv 导入数据库数据时间过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27247639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com