【问题标题】:Import data from CSV and Insert it into Mysql从 CSV 导入数据并将其插入 Mysql
【发布时间】:2019-03-31 01:11:50
【问题描述】:

我正在尝试使用 PHP 脚本将数据从 CSV 文件导入并插入到 Mysql 数据库表中。到目前为止,我已成功收到消息alert('Import done'),但我总是收到此错误:

有人知道为什么我总是收到这个错误吗? 我尝试以不同的方式插入数据,但它们似乎总是得到相同的错误:

$item1 = mysqli_real_escape_string($conn, $data[1]);
$item1 = mysqli_real_escape_string($conn, $_POST($data[1]));
$item1 = $_POST($data[1]); 

这是我的代码:

<?php
include('Conexion.php');
if(isset($_POST["submit"]))
{
    if($_FILES['file']['name'])
    {
        $filename = explode(".", $_FILES['file']['name']);
        if($filename[1] == 'csv')
        {
            $handle = fopen($_FILES['file']['tmp_name'], "r");
            while($data = fgetcsv($handle))
            {
                /*$item1 = mysqli_real_escape_string($conn, $data[1]);
                $item1 = mysqli_real_escape_string($conn, $_POST($data[1]));*/
                $item1 = $_POST($data[1]); /*This is line 15*/

                $query = "INSERT INTO excel(title) values('$item1')";
                mysqli_query($conn, $query);
            }
            fclose($handle);
            echo "<script>alert('Import done');</script>";
        }
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
</head>
<body>
<form method="post" enctype="multipart/form-data">
    <div align="center">
        <label>Select the CSV:</label>
        <input type="file" name="file" />
        <input type="submit" name="submit" value="Import" class="btn btn-info" />
    </div>
</form>
</body>
</html>

这是我的桌子:

CREATE TABLE excel (
  excercise_id int(11) NOT NULL AUTO_INCREMENT,
  title text,
  PRIMARY KEY (excercise_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

【问题讨论】:

    标签: php database csv


    【解决方案1】:

    您的文件中有多少列?

    但是,我认为你可以试试这个:

     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
         if (isset($data[1])) {         
             $item1 = $data[1];
             $query = "INSERT INTO excel(title) values('$item1')";
             mysqli_query($conn, $query); 
        } 
    }
    

    您可以查看本文档中的第一个示例:https://www.php.net/manual/fr/function.fgetcsv.php

    【讨论】:

    • 感谢您的回答。我试过了,它给了我这个错误:注意:未定义的偏移量:C 中的 1。在我的文件中,我有 6 列,但是使用 data[1] 我只是得到第一列和第二行吗?
    • while 循环浏览所有文件行。看看我上面的例子。
    • 它适用于您提供的新代码,至少现在它将数据保存在数据库中。但是,它仍然给出错误: 注意:未定义的偏移量:1 行 $ item1 = $ data [1];
    • 这可能是因为您有一个空行或包含空数据的行。我建议您在 while 循环中添加 isset 条件。
    • 感谢您的回答!你帮了我很多:)
    猜你喜欢
    • 2015-02-07
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2020-08-06
    相关资源
    最近更新 更多