Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
问题:使用phpMyAdmin导入csv有效,Php脚本以不同的方式处理csv导入_Php_Csv_Import_Phpmyadmin - Fatal编程技术网

问题:使用phpMyAdmin导入csv有效,Php脚本以不同的方式处理csv导入

问题:使用phpMyAdmin导入csv有效,Php脚本以不同的方式处理csv导入,php,csv,import,phpmyadmin,Php,Csv,Import,Phpmyadmin,我一直在使用这个脚本,我认为它有点过时。我遇到的问题是,当我使用phpMyAdmin导入csv文件6000+记录时,它工作正常,但是,当我使用此php脚本导入相同的csv文件时,它会破坏字段顺序 只导入前两条记录。导入的第二条记录没有正确导入,因为第二条记录的第一个字段包含在第一条记录的最后一个字段中,因此导入过程似乎没有识别下一条记录的换行符。我尝试将csv文件保存为utf8和ascii。在这两种情况下,这都没有什么区别 修改脚本以与phpMyAdmin相同的方式处理csv文件有什么想法吗 &

我一直在使用这个脚本,我认为它有点过时。我遇到的问题是,当我使用phpMyAdmin导入csv文件6000+记录时,它工作正常,但是,当我使用此php脚本导入相同的csv文件时,它会破坏字段顺序

只导入前两条记录。导入的第二条记录没有正确导入,因为第二条记录的第一个字段包含在第一条记录的最后一个字段中,因此导入过程似乎没有识别下一条记录的换行符。我尝试将csv文件保存为utf8和ascii。在这两种情况下,这都没有什么区别

修改脚本以与phpMyAdmin相同的方式处理csv文件有什么想法吗

<?php

include "connect.php"; //Connect to Database

$deleterecords = "TRUNCATE TABLE plfwinvtable"; //empty the table of its current records

mysqli_query( $conn, $deleterecords );

//Upload File

if (isset($_POST['submit'])) {

    if (is_uploaded_file($_FILES['filename']['tmp_name'])) {

        echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";

        echo "<h2>Displaying contents:</h2>";

        readfile($_FILES['filename']['tmp_name']);

    }

    //Import uploaded file to Database

    $handle = fopen($_FILES['filename']['tmp_name'], "r");

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

        $import="INSERT into plfwinvtable(Barcode, Brand, Description, Category, Price, Size, Unit, ServeOz, NumDrinks, NameVar) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]')";

        mysqli_query($conn, $import) or die(mysqli_error());

    }

    fclose($handle);

    print "Import done";

    //view upload form

}else {

    print "Upload new csv by browsing to file and clicking on Upload<br />\n";

    print "<form enctype='multipart/form-data' action='upload.php' method='post'>";

    print "File name to import:<br />\n";

    print "<input size='50' type='file' name='filename'><br />\n";

    print "<input type='submit' name='submit' value='Upload'></form>";

}

?>
将文件另存为upload.php

将100%起作用……:


你现在面临什么问题?工作正常。我使用mysqli连接进行连接。如上所述,脚本不会将我的csv文件与phpMyAdmin上载相同,我使用phpMyAdmin上载来衡量我的csv数据文件的格式是否正确。使用mysqli连接不是问题。我还添加了屏幕截图来回答上述问题。我认为这是我的csv文件的问题。我想试试,让你知道。感谢您的时间。注意:如果PHP在读取Macintosh计算机上或由Macintosh计算机创建的文件时无法正确识别行尾,启用自动检测行尾运行时配置选项可能有助于解决此问题。请注意,我想您可能了解到了一些问题,因为我正在使用旧的mac和filemaker创建csv文件。我的客户有一个共享托管帐户w/cpanel。希望我可以在服务器上更改此设置。您应该能够在代码中使用我正在寻找的一个如何在php脚本中执行此操作的示例动态更改auto_detect_line_endings设置。如何执行此操作,以及在脚本中的何处添加此.ini\u set“auto\u detect\u line\u endings”,true。在注释中,作者实际将此作为示例
<html>
<head>
<style type="text/css">
body {
    background: #E3F4FC;
    font: normal 14px/30px Helvetica, Arial, sans-serif;
    color: #2b2b2b;
}
a {
    color:#898989;
    font-size:14px;
    font-weight:bold;
    text-decoration:none;
}
a:hover {
    color:#CC0033;
}

h1 {
    font: bold 14px Helvetica, Arial, sans-serif;
    color: #CC0033;
}
h2 {
    font: bold 14px Helvetica, Arial, sans-serif;
    color: #898989;
}
#container {
    background: #CCC;
    margin: 100px auto;
    width: 945px;
}
#form           {padding: 20px 150px;}
#form input     {margin-bottom: 20px;}
</style>
</head>
<body>
<div id="container">
<div id="form">

<?php

include "inc/database.php"; //Connect to Database

//Upload File
if (isset($_POST['submit'])) {
    if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
        echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
        echo "<h2>Displaying contents:</h2>";
        readfile($_FILES['filename']['tmp_name']);
    }

    //Import uploaded file to Database
    $handle = fopen($_FILES['filename']['tmp_name'], "r");

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $import="INSERT into awards (field1, field2, field3, field4) values('$data[0]','$data[1]','$data[2]','$data[3]')";

        mysql_query($import) or die(mysql_error());
    }

    fclose($handle);

    print "Import done";

    //view upload form
}else {

    print "Upload new csv by browsing to file and clicking on Upload<br />\n";

    print "<form enctype='multipart/form-data' action='upload.php' method='post'>";

    print "File name to import:<br />\n";

    print "<input size='50' type='file' name='filename'><br />\n";

    print "<input type='submit' name='submit' value='Upload'></form>";

}

?>

</div>
</div>
</body>
</html>