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