使用include和exclude行和col上传.csv文件

时间:2013-02-18 10:30:43

标签: php mysql file-upload

在PHP中上传.csv文件或删除特定单词时是否可以删除多余的行?

请看一下我的截屏。我想在MySQL处理上传时排除那些被包围的内容。

Screenshot Full Size

这是我在网上找到的代码。

<?php

$message = null;

$allowed_extensions = array('csv');

$upload_path = '';

if (!empty($_FILES['file'])) {

    if ($_FILES['file']['error'] == 0) {

        // check extension
        $file = explode(".", $_FILES['file']['name']);
        $extension = array_pop($file);

        if (in_array($extension, $allowed_extensions)) {

            if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_path.'/'.$_FILES['file']['name'])) {

                if (($handle = fopen($upload_path.'/'.$_FILES['file']['name'], "r")) !== false) {

                    $keys = array();
                    $out = array();

                    $insert = array();

                    $line = 1;

                    while (($row = fgetcsv($handle, 0, ',', '"')) !== FALSE) {

                        foreach($row as $key => $value) {
                            if ($line === 1) {
                                $keys[$key] = $value;
                            } else {
                                $out[$line][$key] = $value;

                            }
                        }

                        $line++;

                    }

                    fclose($handle);    

                    if (!empty($keys) && !empty($out)) {

                        $db = new PDO('mysql:host=localhost;dbname=attendance', 'root', 'root');
                        $db->exec("SET CHARACTER SET utf8");

                        foreach($out as $key => $value) {

                            $sql  = "INSERT INTO `report` (`";
                            $sql .= implode("`, `", $keys);
                            $sql .= "`) VALUES (";
                            $sql .= implode(", ", array_fill(0, count($keys), "?"));
                            $sql .= ")";
                            $statement = $db->prepare($sql);
                            $statement->execute($value);

                        }

                        $message = '<span class="green">File has been uploaded successfully</span>';

                    }   

                }

            }

        } else {
            $message = '<span class="red">Only .csv file format is allowed</span>';
        }

    } else {
        $message = '<span class="red">There was a problem with your file</span>';
    }

}

?>

1 个答案:

答案 0 :(得分:0)

好吧,没有更多信息 - 看起来你要排除的行比其他行少(我假设你不想要空行)。

您可以使用

功能
$arr= str_getcsv();

将一行CSV数据读入数组do

if(sizeof($arr)!=$validCount)

在结果数组上,您可以排除不具有特定长度的行($ validCount)。

显然我们可以更深入地排除,但我猜这会让你开始。

注意 - 这需要PHP5.3或更高版本。

HTH

[R