Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
PHP/MYSQL-将Excel/CSV上载到MYSQL表_Php_Mysql_Excel - Fatal编程技术网

PHP/MYSQL-将Excel/CSV上载到MYSQL表

PHP/MYSQL-将Excel/CSV上载到MYSQL表,php,mysql,excel,Php,Mysql,Excel,我最近开发了一个网络应用程序,允许老师给学生评分和其他很多东西。现在,我正在添加一个功能,让老师可以选择上传一个excel/csv文件,将所有成绩上传给不同的学生。我的代码看起来很好,但是有一些问题,我不知道为什么。发生的事情是,我在我的“avaliacoes”表上得到一堆空白记录,而我本应该只得到2条记录 我的excel的外观: 1 (row) : naluno, uc, tipo, nota 2 (row) : r2011251, BD, exame, 15 3 (row) : r2011

我最近开发了一个网络应用程序,允许老师给学生评分和其他很多东西。现在,我正在添加一个功能,让老师可以选择上传一个excel/csv文件,将所有成绩上传给不同的学生。我的代码看起来很好,但是有一些问题,我不知道为什么。发生的事情是,我在我的“avaliacoes”表上得到一堆空白记录,而我本应该只得到2条记录

我的excel的外观:

1 (row) :  naluno, uc, tipo, nota
2 (row) : r2011251, BD, exame, 15
3 (row) : r2011223, BD, exame, 16
(插入表时不考虑第一行)

我的表单HTML代码(在Diretor Curso.php中):


Enviar Ficheiro Excel/CSV com注释


处理上载的我的PHP页面(lancarnota3.PHP):

<?php

if(isset($_POST["Submeter"]))
{
    $conn = mysqli_connect("localhost", "root", "", "teste");
    $conn->set_charset("utf8");

    // Check connection
    if($conn === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }
    //$filename=$_FILES["file"]["tmp_name"];
    if($_FILES["file"]["size"] > 0)
    {
        $file = fopen($_FILES["file"]["tmp_name"], "r");

        $count = 0;                                         
        while (($emapData = fgetcsv($file, 1000, ",")) !== FALSE)
        {

            $count++;                                      

            if($count>1){                                  
              $sql = "INSERT into avaliacoes (naluno, uc, tipo, nota) values ('$emapData[0]','$emapData[1]','$emapData[2]','$emapData[3]')";
              mysqli_query($conn, $sql);
            }                                              
        }
        fclose($file);
        include 'Diretor-Curso.php';
        echo "<script> replace('lancarnotas2'); </script>";
    }
    else
    {
        include 'Diretor-Curso.php';
        echo "<script> replace('lancarnotas6'); </script>";
    }
}


// close connection
mysqli_close($conn);
?>

您确定数据文件不包含空行吗?检查MySQL常规日志以查看执行了哪些查询。我希望您会看到在日志中插入空白记录的查询。


您可以简单地在插入之前添加一个条件,以检查您是否正在尝试插入“非空”数据,或者执行其他验证以确保数据确实完整。

这是一个愚蠢的操作,因此基本上我必须将逗号(“,”)改为分号(;”)因为csv出于某种原因将所有东西分开。现在它工作得很好。哦,希望这对任何人都有帮助:)

检查正在上载的csv文件中的空行
<?php

if(isset($_POST["Submeter"]))
{
    $conn = mysqli_connect("localhost", "root", "", "teste");
    $conn->set_charset("utf8");

    // Check connection
    if($conn === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }
    //$filename=$_FILES["file"]["tmp_name"];
    if($_FILES["file"]["size"] > 0)
    {
        $file = fopen($_FILES["file"]["tmp_name"], "r");

        $count = 0;                                         
        while (($emapData = fgetcsv($file, 1000, ",")) !== FALSE)
        {

            $count++;                                      

            if($count>1){                                  
              $sql = "INSERT into avaliacoes (naluno, uc, tipo, nota) values ('$emapData[0]','$emapData[1]','$emapData[2]','$emapData[3]')";
              mysqli_query($conn, $sql);
            }                                              
        }
        fclose($file);
        include 'Diretor-Curso.php';
        echo "<script> replace('lancarnotas2'); </script>";
    }
    else
    {
        include 'Diretor-Curso.php';
        echo "<script> replace('lancarnotas6'); </script>";
    }
}


// close connection
mysqli_close($conn);
?>