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