Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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将CSV文件导入MySQL_Php_Mysql_Fgetcsv - Fatal编程技术网

使用PHP将CSV文件导入MySQL

使用PHP将CSV文件导入MySQL,php,mysql,fgetcsv,Php,Mysql,Fgetcsv,我正在尝试使用fgetcsv函数将CSV数据导入MySQL数据库 if(isset($_POST['submit'])) { $fname = $_FILES['sel_file']['name']; $var = 'Invalid File'; $chk_ext = explode(".",$fname); if(strtolower($chk_ext[1]) == "csv") { $filename = $_FILES['sel_

我正在尝试使用fgetcsv函数将CSV数据导入MySQL数据库

if(isset($_POST['submit'])) {
     $fname = $_FILES['sel_file']['name'];
     $var = 'Invalid File';
     $chk_ext = explode(".",$fname);

     if(strtolower($chk_ext[1]) == "csv") {
         $filename = $_FILES['sel_file']['tmp_name'];
         $handle = fopen($filename, "r");
     $res = mysql_query("SELECT * FROM vpireport");
     $rows = mysql_num_rows($res);
     if($rows>=0) {
        mysql_query("DELETE FROM vpireport") or die(mysql_error());

        for($i =1;($data = fgetcsv($handle, 10000, ",")) !== FALSE; $i++) {
            if($i==1)
            continue;
            $sql = "INSERT into vpireport
                                    (item_code,
                                     company_id,
                                     purchase,
                                     purchase_value) 
                                     values
                                    (".$data[0].",
                                     ".$data[1].",
                                     ".$data[2].",
                                     ".$data[3].")";
            //echo "$sql";
            mysql_query($sql) or die(mysql_error());
        }
    }

     fclose($handle);
    ?>
     <script language="javascript">
     alert("Successfully Imported!");
     </script>
     <?
 }

到目前为止,我还没有找到问题所在,非常感谢您的帮助。谢谢。

取消注释//echo$sql;看看最后一个出错的查询是什么-可能是csv数据包含奇怪的字符,或者查询被切断了

顺便说一句:您也可以通过mysql导入csv文件:
取消注释//echo$sql;看看最后一个出错的查询是什么-可能是csv数据包含奇怪的字符,或者查询被切断了

顺便说一句:您也可以通过mysql导入csv文件:

您可能需要转义引号,这可以通过和来完成

为了简洁起见,我跳过了示例中的大部分代码,只关注for循环


但是,这并不能消除任何有问题的字符,因此如果出现问题,您可能需要查看某种数据清理。

您可能需要转义引号,这可以通过使用和来完成

$row = 1;

if (($handle = fopen("albums.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ',','"')) !== FALSE) {
            if($row!=1){    
                $num = count($data);
                $albumIndex=0;

                //Insert into tbl_albums 

                $sqlAlbums="INSERT INTO tbl_albums(albumName) VALUES ('".$data[$albumIndex]."')";
                $resultAlbums=mysql_query($sqlAlbums);



                }
            }
            $row++;

            }
        }
fclose($handle);
为了简洁起见,我跳过了示例中的大部分代码,只关注for循环


但是,这并不能消除任何问题字符,因此如果出现问题,您可能需要查看某种数据清理。

我认为它无法将逗号分隔的值与数据分隔开。您可以发布一个示例数据字段吗?您可以显示您的表定义DDL吗?可能$data wwas未正确转义。\n您的一个字段中似乎有一个“”。对于插入到查询中的字符串,应该始终使用mysql\u real\u escape\u字符串。您可以使用上面问题中pekka回答的加载数据填充。加载数据填充语法:嘿,Neal,我想这个链接可能会对你有所帮助,因为它有明确的解释……我认为它无法将逗号分隔的值与数据分离。您可以发布一个示例数据字段吗?您可以显示您的表定义DDL吗?可能$data wwas未正确转义。\n您的一个字段中似乎有一个“”。对于插入到查询中的字符串,应该始终使用mysql\u real\u escape\u字符串。您可以使用上面问题中pekka回答的加载数据填充。加载数据填充语法:嘿,Neal,我想这个链接可能会对你有帮助,它有明确的解释。。。。。。
$row = 1;

if (($handle = fopen("albums.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ',','"')) !== FALSE) {
            if($row!=1){    
                $num = count($data);
                $albumIndex=0;

                //Insert into tbl_albums 

                $sqlAlbums="INSERT INTO tbl_albums(albumName) VALUES ('".$data[$albumIndex]."')";
                $resultAlbums=mysql_query($sqlAlbums);



                }
            }
            $row++;

            }
        }
fclose($handle);
$row = 1;

if (($handle = fopen("albums.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ',','"')) !== FALSE) {
            if($row!=1){    
                $num = count($data);
                $albumIndex=0;

                //Insert into tbl_albums 

                $sqlAlbums="INSERT INTO tbl_albums(albumName) VALUES ('".$data[$albumIndex]."')";
                $resultAlbums=mysql_query($sqlAlbums);



                }
            }
            $row++;

            }
        }
fclose($handle);