Php 如何将csv文件数据插入数据库?
目前,我正在用php做一个项目,用于上传CSV文件并将数据插入数据库。上传CSV文件后,它会用复选框显示文件中的数据。单击复选框时,值不会插入表中 我使用的编码Php 如何将csv文件数据插入数据库?,php,mysql,csv,Php,Mysql,Csv,目前,我正在用php做一个项目,用于上传CSV文件并将数据插入数据库。上传CSV文件后,它会用复选框显示文件中的数据。单击复选框时,值不会插入表中 我使用的编码 if(isset($_POST['upload'])) { if (is_uploaded_file($_FILES['filename']['tmp_name'])) { echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded
if(isset($_POST['upload']))
{
if (is_uploaded_file($_FILES['filename']['tmp_name']))
{
echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
}
$handle = fopen($_FILES['filename']['tmp_name'], "r");
echo("<table border='1'>");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
echo("<tr>\r\n");
foreach ($data as $index=>$val)
{
echo("\t<td><input type='checkbox' name='chk1[]' value='$val'>$val</td>\r\n");
}
}
echo("</tr>\r\n");
echo("</table>");
echo("<input type='submit' name='insert' id='insert' value='Submit' />");
fclose($handle);
}
上传文件时会显示值,但单击提交按钮不会执行任何操作
提交按钮的代码为:
if(isset($_POST['insert']))
{
for($i=0;$i < sizeof($checkbox1);$i++)
{
$query = "INSERT INTO uploadmail (name,email) VALUES ('$name','".$checkbox1[$i]."')";
$result = mysql_query($query);
}
}
显示的值如下所示
请给出您的建议。提前谢谢。您可以从本网站下载reader.php和oleread.inc zip文件夹 以及在数据库中插入数据的其余代码 需要一次“Excel/reader.php”
// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
// Set output Encoding.
$data->setOutputEncoding('CP1251');
$data->read($_FILES['excel_upload']['tmp_name']);
error_reporting(E_ALL ^ E_NOTICE);
for ($i=1;$i<=$data->sheets[0]['numRows'];$i++)
{
$EmailAdd = $data->sheets[0]['cells'][$i][1];
$NameAdd = $data->sheets[0]['cells'][$i][2];
$Phone = $data->sheets[0]['cells'][$i][3];
$Address = mysql_real_escape_string($data->sheets[0]['cells'][$i][4]);
if(filter_var($EmailAdd, FILTER_VALIDATE_EMAIL))
{
$currentId = mysql_query("INSERT INTO `Student` (`StudentEmail_email`,StudentEmail_Name`,`StudentEmail_Mobile`,`StudentEmail_Address`) VALUES ('$EmailAdd','$NameAdd','$ContactAdd','$Address')");
}
}
评论:
我在/**/中引用的代码中包含了一些解释。
我将insert查询更改为MySQLi Prepared语句,而不是
不推荐使用MySQL。
这是一个你可以使用的代码
if(isset($_POST['upload']))
{
if (is_uploaded_file($_FILES['filename']['tmp_name']))
{
echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
}
$handle = file_get_contents($_FILES['filename']['tmp_name']); /* GET THE CONTENT OF UPLOADED FILE */
$val = explode(',',$handle);
$count = count($val); /* COUNT THE TOTAL EXPLODED RESULT */
echo("<table border='1'>");
for($x=0;$x<=$count;$x++){ /* START THE LOOP BASED FROM THE COUNTED RESULT */
echo("<tr>\r\n");
echo("\t<td><input type='checkbox' name='chk1[$x]' value='$val[$x]'>$val[$x]</td>\r\n"); /* GET THE VALUE AND STORE IT INTO THE chk1 ARRAY */
echo("</tr>\r\n");
} /* END OF FOR LOOP */
echo("</table>");
echo("<input type='submit' name='insert' id='insert' value='Submit' />");
} /* END OF ISSET UPLOAD */
看看加载数据SQL查询。我认为你不应该在循环内重定向,以前从未见过我更改过,但它也不起作用@Fred-ii打开后立即将错误报告添加到文件顶部你可以从该站点下载reader.php和oleread.inc zip文件夹
if(isset($_POST['insert']))
{
$comp=count($_POST['chk1']); /* COUNT THE TOTAL SUBMITTED CHECKBOX */
$checkbox1=$_POST['chk1'];
for($i=0;$i<=$comp;$i++)
{
if(!empty($checkbox1[$i])){ /* IF SUBMITTED DATA IS CHECKED */
/* WHERE DOES YOUR $name VARIABLE CAME FROM? */
$stmt = $YourSQLConnection->prepare("INSERT INTO uploadmail (name,email) VALUES (?, ?)");
$stmt->bind_param('ss', $name,$checkbox1[$i]); /* BIND THE VALUE TO STRINGS */
}
}
}