使用php将excel数据导入sql数据库

时间:2016-06-21 07:06:51

标签: php sql excel forms

我正在尝试使用以下php代码将数据从excel表导入我的sql数据库:     

$hostname = "localhost";
$username = "root";
$password = "";
$database = "unhrd_fund_balance";


$conn = mysqli_connect("$hostname","$username","$password","$database") or die(mysql_error());


?>

<form name="import" method="post" enctype="multipart/form-data">
        <input type="file" name="file" /><br />
        <input type="submit" name="submit" value="Submit" />
</form>



<?php
if(isset($_POST["submit"]))
{
    $file = $_FILES['file']['tmp_name'];
    $handle = fopen($file, "r");
    $c = 0;
    while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
    {
        $progkey = $filesop[0];
        $grantkey = $filesop[1];
        $TOD = $filesop[2];
        $TDD=$filesop[3];
        $fund=$filesop[4];
        $orderkey=$filesop[5];
        $budget=$filesop[6];
        $precommit=$filesop[7];
        $commit=$filesop[8];
        $actuals=$filesop[9];
        $totalcommit=$filesop[10];
        $availbudget=$filesop[11];

        $sql = mysqli_query("INSERT INTO csv (FUNDED_PROG_KEY, GRANT_KEY, TOD, TDD, FUND, ORDER_KEY, BUDGET_ALLOC, PRE_COMMIT, COMMIT, ACTUALS, TOTAL_COMMIT,AVAILABLE_BUDGET) VALUES ('$progkey', '$grantkey','$TOD','$TDD','$fund','$orderkey','$budget','$precommit','$commit,'$actuals','$totalcommit','$availbudget')");


    }

        if($sql){
            echo "You database has imported successfully";
        }else{
            echo "Sorry! There is some problem.";
        }
}
?>

我的SQL数据库是:

CREATE TABLE `fund_balances` (
  `FUNDED_PROG_KEY` varchar(20) NOT NULL,
  `GRANT_KEY` varchar(25) NOT NULL,
  `TOD` date NOT NULL,
  `TDD` date NOT NULL,
  `FUND` varchar(35) NOT NULL,
  `ORDER_KEY` int(30) NOT NULL,
  `BUDGET_ALLOC` bigint(255) NOT NULL,
  `PRE_COMMIT` bigint(255) NOT NULL,
  `COMMIT` bigint(255) NOT NULL,
  `ACTUALS` bigint(255) NOT NULL,
  `TOTAL_COMMIT` bigint(255) NOT NULL,
  `AVAILABLE_BUDGET` bigint(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

当我附加xlsx文件并单击表单中的提交时,我收到以下错误:

  

注意:未定义的偏移量:3英寸   第36行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

     

注意:未定义的偏移:4英寸   第37行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

     

注意:未定义的偏移量:5英寸   第38行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

     

注意:未定义的偏移量:6英寸   第39行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

     

注意:未定义的偏移量:7英寸   第40行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

     

注意:未定义的偏移量:8英寸   第41行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

     

注意:未定义的偏移:9英寸   第42行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

     

注意:未定义的偏移量:10英寸   第43行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

     

注意:未定义的偏移:11英寸   第44行/Applications/XAMPP/xamppfiles/htdocs/Web/Form1.php

1 个答案:

答案 0 :(得分:0)

首先,这些不是错误,但notices告诉您$filesop数组中没有第N个元素。

其次,我认为你不能用fgetcsv读取XLSX文件,你需要一个外部库(例如PHPExcel)。

第三,您INSERT进入csv,而您的表名是fund_balances

此外,"$hostname"没用,只需使用$hostname

最后,请阅读SQL injectionprepared statements