如何使用PHP将Excel数据导入MySQL

时间:2014-03-10 09:45:49

标签: php mysql excel import

任何人都可以告诉我:

我必须上传excel文件并将其所有数据放入数据库,但条件是这样 如果数据库中已存在任何记录,则必须触发更新查询。 否则为新记录触发插入查询。

我正在将数据库中的Roll No与来自excel的Roll No进行比较。它可以与现有数据一起使用,即更新所有现有数据。但它没有插入新数据。请检查以下代码:else if($ num_rows> 0)

请帮助我。

以下是代码:

if($_FILES['excelFile']['name']!="")
{
    $fileName=uploadFile($_FILES['excelFile'],array(".xls",".xlsx"),"excel_file");
    $data = new Spreadsheet_Excel_Reader();
    $data->read('excel_file/'.$fileName);
    $ans=mysql_query("SELECT * FROM StudentData");
    $num_rows = mysql_num_rows($ans);
    for($i=1;$i<=$data->sheets[0]['numRows'];$i++)
    {
        $rollno=$data->sheets[0]['cells'][$i][1];
        $firstname=$data->sheets[0]['cells'][$i][2];
        $lastname=$data->sheets[0]['cells'][$i][3];
        $mobile=$data->sheets[0]['cells'][$i][4];
        $city=$data->sheets[0]['cells'][$i][5];

        if($num_rows<=0)
        {
            echo('Inserting : '.$rollno);
            $query="INSERT INTO StudentData(RollNo,FirstName,LastName,MobileNo,City)VALUES('".$rollno."','".$firstname."','".$lastname."','".$mobile."','".$city."')";
            mysql_query($query);
        }
        else if($num_rows>0)
        {
            while($rows=mysql_fetch_array($ans))
            {
                if($rollno!=$rows['RollNo'])
                {
                    echo('<p style="color:green">Inserting : '.$rollno.'</p>');
                    $query="INSERT INTO StudentData(RollNo,FirstName,LastName,MobileNo,City)VALUES('".$rollno."','".$firstname."','".$lastname."','".$mobile."','".$city."')";
                    mysql_query($query);
                    mysql_error();
                    break;
                }
                else
                {
                    echo('<p style="color:red">Updating Roll:'.$rollno.'and DBR:'.$rows['RollNo'].'</p>');
                    $query="UPDATE StudentData SET FirstName='".$firstname."',LastName='".$lastname."',MobileNo='".$mobile."',City='".$city."' WHERE RollNo='".$rollno."'";
                    mysql_query($query);
                    break;
                }

            }   
        }
    }

} 

3 个答案:

答案 0 :(得分:1)

我尝试将所有现有的卷放在一个数组中!

所以我从现有的rollno

创建了一个数组
while($rows=mysql_fetch_array($ans))
{
 $existing_rollno[]=$rows['RollNo'];
}

然后我使用了这个php函数: -

if (in_array($rollno, $existing_rollno))

然后它就像我想要的那样工作。

答案 1 :(得分:0)

当num_ros&lt; = 0时,insert语句是否有效?如果没有,那么你的insert语句不起作用。另外,我不确定,但在VALUES之前你不需要空间。

答案 2 :(得分:0)

确定。所以你的insert语句没问题。现在检查一下。在语句之后你有回声if($ rollno!= $ rows ['RollNo'])它是否打印任何东西。如果它没有,那么你的if语句是错误的。试试!==而不是!=