我正在尝试使用以下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
答案 0 :(得分:0)
首先,这些不是错误,但notices告诉您$filesop
数组中没有第N个元素。
其次,我认为你不能用fgetcsv
读取XLSX文件,你需要一个外部库(例如PHPExcel)。
第三,您INSERT
进入csv
,而您的表名是fund_balances
。
此外,"$hostname"
没用,只需使用$hostname
。
最后,请阅读SQL injection和prepared statements。