【问题标题】:Build SQL query for each record of a csv file为 csv 文件的每条记录构建 SQL 查询
【发布时间】:2013-02-21 22:23:55
【问题描述】:

大家好,

老实说,我被困住了...我想寻求您的帮助。我面临的挑战是这样的: 1. 将 CSV 文件上传到服务器。 2. 打开 CSV 文件。 3.解析它,显示数据并为csv文件的每条记录构建一个sql查询。

现在,我的问题是第 3 步。我已经在表格中解析和显示数据,但无法构建查询。感谢您提供任何帮助!

这是我用来解析 csv 文件并显示数据的代码。我想请教一下我应该如何修改代码来为文件的每条记录创建和执行一个 sql 查询。

if ( $file = fopen( "upload/" . $storagename , r ) ) {

            echo "File opened.<br />";

            $firstline = fgets ($file, 4096 );
            //Gets the number of fields, in CSV-files the names of the fields are mostly given in the first line
            $num = strlen($firstline) - strlen(str_replace(";", "", $firstline));

            //save the different fields of the firstline in an array called fields
            $fields = array();
            $fields = explode( ";", $firstline, ($num+1) );

            $line = array();
            $i = 0;

            //CSV: one line is one record and the cells/fields are seperated by ";"
            //so $dsatz is an two dimensional array saving the records like this: $dsatz[number of record][number of cell]
            while ( $line[$i] = fgets ($file, 4096) ) {

                $dsatz[$i] = array();
                $dsatz[$i] = explode( ";", $line[$i], ($num+1) );

                $i++;
            }

            echo "<table>";
            echo "<tr>";
            for ( $k = 0; $k != ($num+1); $k++ ) {
                echo "<td>" . $fields[$k] . "</td>";
            }
            echo "</tr>";

            foreach ($dsatz as $key => $number) {
                //new table row for every record
                echo "Record <tr>";
                foreach ($number as $k => $content) {
                    //new table cell for every field of the record
                    echo "<td>" . $content . " </td>";
                }
            }

            echo "</table>";
        }

感谢您的宝贵时间。

【问题讨论】:

    标签: php sql parsing csv


    【解决方案1】:

    试试这个:

            foreach ($dsatz as $key => $number) {
    
        // New code here -lighthart
                echo "insert into table ("
                     .implode(",", $fields)
                     .") values ("
                     .implode(",",$number).");"
    
    
                //new table row for every record
                foreach ($number as $k => $content) {
                    //new table cell for every field of the record
                    echo "<td>" . $content . " </td>";
                }
            }
    

    【讨论】:

    • 很抱歉,我还不能以这种方式工作,我明天再试一次......
    猜你喜欢
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多