Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php和html将csv表导入mysql数据库_Php_Html_Mysql_Csv - Fatal编程技术网

如何使用php和html将csv表导入mysql数据库

如何使用php和html将csv表导入mysql数据库,php,html,mysql,csv,Php,Html,Mysql,Csv,我想使用HTML表单将csv表单导入MYSQL数据库, 现在我可以成功导入,但问题是,我必须只在脚本中提供inputfile路径,以便用户可以上载csv文件,文件上载后,调用函数并将“文件路径”作为参数传递。 下面我试过这个代码 <?php $delimiter = ','; $db = new mysqli('localhost', 'root', '', 'ProcessTrackingSystem'); if (($handle = fopen("/va

我想使用HTML表单将csv表单导入MYSQL数据库,
现在我可以成功导入,但问题是,我必须只在脚本中提供inputfile路径,以便用户可以上载csv文件,文件上载后,调用函数并将“文件路径”作为参数传递。
下面我试过这个代码

 <?php
    $delimiter = ',';

    $db = new mysqli('localhost', 'root', '', 'ProcessTrackingSystem');

    if (($handle = fopen("/var/www/html/new/database_template.csv", "r")) !== FALSE) {
       while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
         foreach($data as $i => $content) {
            $data[$i] = $db->real_escape_string($content);
         }
       $db->query("INSERT INTO ProcessTrackingSystem.ProcessDetails VALUES('" . implode("','", $data) . "');");
      }
      fclose($handle);
    }

  ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <title>Import a CSV File with PHP & MySQL</title>
</head>

<body>

   <?php 
      if (!empty($_GET[success])) { echo "<b>Your file has been imported. </b><br><br>"; } //generic success notice 
   ?>

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  Choose your file: <br />
   <input name="csv" type="file" id="csv" />
   <input type="submit" name="Submit" value="Submit" />
</form>

</body>
</html>   

我通过下面的代码获得了所需的输出

<?php if (!$_POST) { ?>
<html>
        <body>
        <form action="" method="post" enctype="multipart/form-data">
        Choose your file: <br /> 
        <input name="csv" type="file" id="csv" /> <br /> <br /> 
        <input type="submit" name="Submit" value="Submit" /> 
        </form>
    </body>
</html>
<?php
} else {
$connect = new mysqli("localhost", "root", "", "ProcessTrackingSystem");
if ($_FILES[csv][size] > 0) {
//get the csv file 
$file = $_FILES[csv][tmp_name]; 
$handle = fopen($file, "r");
$i = 0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    if ($i > 0) {
$import = ("INSERT INTO ProcessTrackingSystem.ProcessDetails VALUES('" . implode("','", $data) . "');");
        $connect->query($import);
    }
    $i++;
}
fclose($handle);
print "Import done";
}
}
?>  

选择您的文件:



我通过下面的代码得到了想要的输出

<?php if (!$_POST) { ?>
<html>
        <body>
        <form action="" method="post" enctype="multipart/form-data">
        Choose your file: <br /> 
        <input name="csv" type="file" id="csv" /> <br /> <br /> 
        <input type="submit" name="Submit" value="Submit" /> 
        </form>
    </body>
</html>
<?php
} else {
$connect = new mysqli("localhost", "root", "", "ProcessTrackingSystem");
if ($_FILES[csv][size] > 0) {
//get the csv file 
$file = $_FILES[csv][tmp_name]; 
$handle = fopen($file, "r");
$i = 0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    if ($i > 0) {
$import = ("INSERT INTO ProcessTrackingSystem.ProcessDetails VALUES('" . implode("','", $data) . "');");
        $connect->query($import);
    }
    $i++;
}
fclose($handle);
print "Import done";
}
}
?>  

选择您的文件:



假设您有一个CSV文件,其格式如下,第一列对应您的字段名:

column name1    column name2    column name3
Value1           Value2           Value3
Value4           Value5           Value6

<?
//Import uploaded file to Database
$handle = fopen($_FILES['filename']['tmp_name'], "r"); // Get File's data
$columnArray=array();//stores the column
$dataArray=array();//store all rows
$records=""//store the all records in string format
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { //Get Excel sheet data row by row
        if($f==0){ //Store first row as column headings
            foreach ($data as $k=>$v){
                $columnArray[$k]=strtolower(str_replace(" ","_",$v));
            }
        }else{ 
            // Store insert string for payment record
            foreach ($data as $k=>$v){
                $dataArray[$f][$k]=$v;
                $records.="'".$v."',";
            }
            if($records!=""){
                $records.="'0',now()),(";
            }
        }
    $f++;
}
fclose($handle);//close file
if($records!=""){ // Insert payment record string
        $records=substr($records, 0, -3);
        $colStr=implode($columnArray,",");
        $insertQuery="INSERT INTO table_name (".$colStr.",checked,dateval) VALUES (".$records.")";
        $this->EbsPaymentDetail->query($insertQuery);
}
$n=0;
//Display table containing records imported 
$dataTable.= "<h2><strong>Following records has been successfully Imported !!</strong></h2><table width='100%'><tr><td><strong>S No.</strong></td>";
foreach ($columnArray as $k=>$v){
    $dataTable.= "<td><strong>".ucwords(str_replace("_"," ",$v))."</strong></td>";
}
$dataTable.= "</tr>";
foreach ($dataArray as $k=>$v){
    $dataTable.= "<tr>";
    $dataTable.= "<td>".++$n."</td>";
    for($j=0;$j<count($v);$j++){
        $dataTable.= "<td>".$v[$j]."</td>";
    }
    $dataTable.= "</tr>";
}
$dataTable.= "</table>";
?>
列名称1列名称2列名称3
值1值2值3
值4值5值6

假设您有一个CSV文件,其格式如下,第一列对应您的字段名:

column name1    column name2    column name3
Value1           Value2           Value3
Value4           Value5           Value6

<?
//Import uploaded file to Database
$handle = fopen($_FILES['filename']['tmp_name'], "r"); // Get File's data
$columnArray=array();//stores the column
$dataArray=array();//store all rows
$records=""//store the all records in string format
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { //Get Excel sheet data row by row
        if($f==0){ //Store first row as column headings
            foreach ($data as $k=>$v){
                $columnArray[$k]=strtolower(str_replace(" ","_",$v));
            }
        }else{ 
            // Store insert string for payment record
            foreach ($data as $k=>$v){
                $dataArray[$f][$k]=$v;
                $records.="'".$v."',";
            }
            if($records!=""){
                $records.="'0',now()),(";
            }
        }
    $f++;
}
fclose($handle);//close file
if($records!=""){ // Insert payment record string
        $records=substr($records, 0, -3);
        $colStr=implode($columnArray,",");
        $insertQuery="INSERT INTO table_name (".$colStr.",checked,dateval) VALUES (".$records.")";
        $this->EbsPaymentDetail->query($insertQuery);
}
$n=0;
//Display table containing records imported 
$dataTable.= "<h2><strong>Following records has been successfully Imported !!</strong></h2><table width='100%'><tr><td><strong>S No.</strong></td>";
foreach ($columnArray as $k=>$v){
    $dataTable.= "<td><strong>".ucwords(str_replace("_"," ",$v))."</strong></td>";
}
$dataTable.= "</tr>";
foreach ($dataArray as $k=>$v){
    $dataTable.= "<tr>";
    $dataTable.= "<td>".++$n."</td>";
    for($j=0;$j<count($v);$j++){
        $dataTable.= "<td>".$v[$j]."</td>";
    }
    $dataTable.= "</tr>";
}
$dataTable.= "</table>";
?>
列名称1列名称2列名称3
值1值2值3
值4值5值6

离题了,但是你准备好用mysqli清除2级sql注入攻击了吗?我不这么认为topic@AdityaK这是一个非常贴切的话题,事实上我对此很友好;)离题了,但是你准备好用mysqli清除2级sql注入攻击了吗?我不这么认为topic@AdityaK这是一个非常贴切的话题,事实上我对此很友好;)离题了,但是你准备好用mysqli清除2级sql注入攻击了吗?我不这么认为topic@AdityaK这是一个非常贴切的话题,事实上我对此很友好;)