Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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 上载时看不到.csv文件_Php_Mysql_Csv - Fatal编程技术网

Php 上载时看不到.csv文件

Php 上载时看不到.csv文件,php,mysql,csv,Php,Mysql,Csv,我正在尝试将一个字段上载到mysql数据库。用户可以手动键入该字段或上载包含该字段的.csv文件来上载该字段。手动输入效果很好,但当我尝试使用.csv上传时,它看不到文件,并跳转到代码的“else”部分。这是我的代码: <?php $classname = $_POST['classname']; $classname = stripslashes($classname); $classname = mysql_real_escape_string($classna

我正在尝试将一个字段上载到mysql数据库。用户可以手动键入该字段或上载包含该字段的.csv文件来上载该字段。手动输入效果很好,但当我尝试使用.csv上传时,它看不到文件,并跳转到代码的“else”部分。这是我的代码:

<?php
    $classname = $_POST['classname'];
    $classname = stripslashes($classname);
    $classname = mysql_real_escape_string($classname);


    $save = $_POST['save'];
    $save = stripslashes($save);
    $save = mysql_real_escape_string($save);


    $myfile = $_POST['myfile'];
    $myfile = stripslashes($myfile);
    $myfile = mysql_real_escape_string($myfile);


    $import = $_POST['import'];
    $import = stripslashes($import);
    $import = mysql_real_escape_string($import);

    if($classname && $save)
    {
        $choose_db;
        $sql="INSERT INTO classes (`class`) VALUES ('$classname')";
        $res=mysql_query($sql, $connect) or die (mysql_error());

        if ($res)
        {
            echo "<script type='text/javascript'>
                    alert('Class added succefully');
                    window.location='../classes.php'
                </script>";
        }
        else
        {
            echo "<script type=text/javascript'>
                    alert('Class not added');
                    window.location('../classes.php');
                </script";
        }
    }




    elseif ($import && $myfile)
    {
        echo $filename = $_FILES["file"]["tmp_name"];

        if ($_FILES["file"]["size"] > 0)
        {
            $thefile=fopen($filename, "r");

            while (($thedata = fgetcsv($thefile, 10000, ",")) !== FALSE)
            {
                $sql_file="INSERT INTO classes (`class`) VALUES ('$thedata[1]')";
                $res_file=mysql_query($sql_file, $connect) or die (mysql_error());

                if (!$res_file)
                {
                    echo "<script type='text/javascript'>
                                alert ('Invalid file type!');
                                window.location = '../classes.php';
                        </script>                   
                    ";
                }
            }

            fclose($thefile);

            echo "<script type='text/javascript'>
                        alert ('File Imported Successfully!');
                        window.location = '../classes.php';
                    </script>                   
            ";

        }
    }




    else
    {
        echo "<script type='text/javascript'>
                        alert('Fill the form or choose a CSV file');
                        window.location='../classes.php'
                </script>";
    }


?>

文件上载仅在
$\u文件中进行,而不是
$\u POST
。所以
$myfile=
$\u POST['myfile']
不会做任何事情,请清除与
$myfile`相关的所有内容

无需在
$\u POST['import']
上调用
stripslashes
mysql\u real\u escape\u string
,因为您没有将其存储在数据库中

您使用的是
$\u文件['file']
,但该输入的名称是
myfile
,因此它应该是
$\u文件['myfile']

因此,代码应该是:

elseif (isset($_POST['import'], $_FILES['myfile'])) {
    echo $filename = $_FILES["myfile"]["tmp_name"];
    if ($_FILES["myfile"]["size"] > 0)
    {
        ...
    }
}

请发布你的HTML表单,这样我们就可以看到它是如何发布的。显然你知道@Barmar在说什么。你应该检查
$[FILES]
是否填充在你的
中,否则如果
。如果他们上载了一个文件,但没有填写
$import
$myfile
?@Barmar我也这么认为。但是我看着它,我觉得很好。我已经为表单添加了代码
elseif (isset($_POST['import'], $_FILES['myfile'])) {
    echo $filename = $_FILES["myfile"]["tmp_name"];
    if ($_FILES["myfile"]["size"] > 0)
    {
        ...
    }
}